社区讨论
Too many or too few lines
P1598[USACO03FEB] 垂直柱状图 Vertical Histogram参与者 4已保存回复 16
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 16 条
- 当前快照
- 1 份
- 快照标识符
- @mi6lih81
- 此快照首次捕获于
- 2025/11/20 06:50 4 个月前
- 此快照最后确认于
- 2025/11/20 07:00 4 个月前
全WA了,都是这个信息,跪求大佬帮忙查错Orz
CPP#include<cstdio>
#include<algorithm>
#include<cmath>
#include<cstring>
const int MAXN = 3000000;
char s[MAXN];
int cnt[30],mark[500],mx;
//cnt记录每种字母出现了多少次
//mark记录柱状图的每一行最右边的*的位置
//mx记录柱状图的最大高度
int main()
{
// freopen("result.txt","w",stdout);
for(int i = 1;i <= 4;++ i)
{
gets(s);
for(int j = 0;j < strlen(s);++ j)
if(s[j] >= 'A' && s[j] <= 'Z')
cnt[s[j]-'A'+1] ++;
}
for(int i = 1;i <= 26;++ i)
if(cnt[i] > mx) mx = cnt[i];
for(int i = mx;i >= 0;-- i)
for(int j = 1;j <= 26;++ j)
if(cnt[j] >= i) mark[i] = j;
for(int i = mx;i >= 0;-- i)
{//绞尽脑汁地去掉了多余的空格和换行..
CPP if(i)
{
for(int j = 1;j <= 26;++ j)
{
if(j == mark[i])
{
if(cnt[j] >= i)
printf("*");
else
printf(" ");
break;
}
if(cnt[j] >= i)
printf("* ");
else
printf(" ");
}
puts("\n");
}
else
for(int j = 1;j <= 26;++ j)
{
if(j == 26) printf("%c",'A'+j-1);
else printf("%c ",'A'+j-1);
}
}
return 0;
}
回复
共 16 条回复,欢迎继续交流。
正在加载回复...