3 条题解
-
1
听说存在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
易错点解析详见代码部分注释 《警钟长鸣》(外网记得修改网址)
附上题解:
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
照题意模拟即可
#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
- 上传者