社区讨论

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 条回复,欢迎继续交流。

正在加载回复...