2 条题解

  • 2
    @ 2022-10-24 23:17:26

    最后一行直接从样例里复制就行了,根据出现次数最多的字母的出现次数决定行数。

    #include<bits/stdc++.h>
    using namespace std;
    int a[27],maxa=0;
    int main(){
        char c=getchar();
        while(c!=EOF){
            if(c>='A'&&c<='Z') ++a[c-'A'+1];
            c=getchar();
        }
        for(int i=1;i<=26;i++){
            if(a[i]>maxa) maxa=a[i];
        }
        for(int i=maxa;i>0;i--){
            for(int j=1;j<=25;j++){
                if(a[j]>=i) putchar('*');
                else putchar(' ');
                putchar(' ');
            }
            if(a[26]>=i) putchar('*');
            putchar('\n');
        }
        printf("A B C D E F G H I J K L M N O P Q R S T U V W X Y Z");
        return 0;
    }
    
    • -1
      @ 2023-12-12 0:15:49

      python版,先统计字母个数 然后推算每一行,去除行尾的空格。 最后一行输出字母

      data = [0]*26
      for i in range(4):
          line = input()
          for ch in line:
              if ch.isalpha():
                  idx = ord(ch)-ord("A")
                  data[idx] += 1
      
      max_len = max(data)
      for i in range(max_len):
          line = "#"
          for j in range(26):
              if data[j]<max_len-i:
                  line += "  "
              else:
                  line += "* "
          line = line.strip()[1:]
          print(line)
      
      alpha = [chr(ord('A')+i) for i in range(26)]
      print(" ".join(alpha))
      
      • 1

      信息

      ID
      594
      时间
      1000ms
      内存
      125MiB
      难度
      2
      标签
      递交数
      71
      已通过
      45
      上传者