3 条题解

  • 1
    @ 2025-3-7 18:27:02

    听说存在cpp题解被【数据删除】

    a=input()+input()+input()+input()
    t=[0]*26
    for i in a:
        if 'A'<=i<='Z':
            t[ord(i)-65]+=1
    m=max(t)
    for i in range(m,0,-1):
        for j in range(26):
            if t[j]>=i:print("* ",end="")
            else:print("  ",end="")
        print("")
    print("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")
    

    12行秒了

    • 0
      @ 2025-3-7 19:54:09

      易错点解析详见代码部分注释 《警钟长鸣》(外网记得修改网址)

      附上题解:

      cnt = [0]*30
      max_len = 0
      for _ in range(4): # 此处糖点详见上贴
          s = input()
          for i in s:
              if 'A'<=i and i<='Z':
                  cnt[ord(i)-ord('A')] += 1
                  max_len = max(max_len, cnt[ord(i)-ord('A')])
      for i in range(max_len):
          s = ""
          for j in range(26):
              if i < max_len-cnt[j]: # 这里的条件要想清楚
              # 说实话建议用倒序
                  s += "  "
              else:
                  s += "* "
          k = 2*26-1
          while k>=0 and s[k]==' ': # k>=0 不要忘,否则可能会越界
              k-=1
          print(s[:k+1]) # 去除行末空格可以直接用切片(而不是像我一开始用的古老for循环())
      for i in range(ord('A'), ord('Z')):
          print(chr(i)+' ', end='')
      print('Z')
      
      • -14
        @ 2025-3-7 16:13:18

        照题意模拟即可

        #include<bits/stdc++.h>
        using namespace std;
        int main(){
            char a[4][100];
            char c;
            for(int i=0;i<4;i++){
                scanf("%[^\n]",&a[i]);
                scanf("%c",&c);
            }
            int cr[25]={0};
            for(int i=0;i<4;i++){
                for(int j=0;j<strlen(a[i]);j++){
                    if(a[i][j]>='A' && a[i][j]<='Z'){
                        cr[a[i][j]-'A']++;
                    }
                }
            }
            /*
            for(int i=0;i<4;i++){
                for(int j=0;j<strlen(a[i]);j++){
                    cout<<a[i][j];
                }
                cout<<endl;
            }*/
            // for(int i=0;i<24;i++){
            //     cout<<cr[i]<<endl;
            // }
            int maxlen=-1;
            for(int i=0;i<24;i++){
                maxlen=max(maxlen,cr[i]);
            }
            char ans[30][100];
            
            for(int j=maxlen;j>0;j--){
                for(int i=1;i<=26;i++){
                    if(cr[i-1]>=j){
                        ans[i][j]='*';
                    }
                }
            }
            for(int j=maxlen;j>0;j--){
                for(int i=1;i<=56;i++){
                    if(i%2==1){
                        int t=(i+1)>>1;
                        if(ans[t][j]=='*'){
                            cout<<'*';
                        }
                        else{
                            cout<<' ';
                        }
                    }else{
                        cout<<" ";
                    }
                }
                cout<<endl;
            }
            for(int i=1;i<=52;i++){
                if(i%2==1){
                    char s='A'+i/2;
                    cout<<s;
                } else {
                    cout<<" ";
                }
            }
        }
        
      • 1

      信息

      ID
      709
      时间
      1000ms
      内存
      256MiB
      难度
      6
      标签
      递交数
      23
      已通过
      10
      上传者