题目换行符或使用不规范,可能导致错误
查看原帖
题目换行符或使用不规范,可能导致错误
1049294
2023112918_Zrex楼主2023/12/2 20:37

使用如下代码,在本地与洛谷在线ide得到输出均与题解相同,但提交却无法通过

#include <stdio.h>
#define max(a, b) (((a) > (b)) ? (a) : (b))

int main(int argc, char *argv[]) {
    int counts[26];
    for (int i = 0; i < 26; ++i) {
        counts[i] = 0;
    }

    char ch;
    int m = 0;
    for (int i = 0; i < 4; ++i) {
        while ((ch = getchar()) != '\n' && ch != '\r' && ch != EOF) {
            getchar();
            if(ch>='A' && ch<='Z') {
                counts[ch - 'A']++;
                m = max(m, counts[ch - 'A']);
            }
        }
    }
    for (int i = 0; i < m; ++i) {
        for (int j = 0; j < 26; ++j) {
            int flag = 0;
            for (int k = j + 1; k < 26; ++k) {
                if (counts[k] >= m - i) flag = 1;
            }

            if (counts[j] >= m - i) {
                putchar('*');
                if (flag) putchar(' ');
            } else {
                if (flag) printf("  ");
                else {
                    putchar('\n');
                    break;
                }
            }
        }
    }
    for (int i = 0; i < 26; ++i) {
        putchar('A' + i);
        if (i < 25) putchar(' ');
    }
    return 0;
}

将

...
  for (int i = 0; i < 4; ++i) {
        while ((ch = getchar()) != '\n' && ch != '\r' && ch != EOF) {
            getchar();
            if(ch>='A' && ch<='Z') {
                counts[ch - 'A']++;
                m = max(m, counts[ch - 'A']);
            }
        }
    }

改为

 for (int i = 0; i < 7; ++i) {
        while ((ch = getchar()) != '\n' && ch != '\r' && ch != EOF) {
            getchar();
            if(ch>='A' && ch<='Z') {
                counts[ch - 'A']++;
                m = max(m, counts[ch - 'A']);
            }
        }
    }

或者

 for (int i = 0; i < 4; ++i) {
        while ((ch = getchar()) != '\n' && ch != '\r' && ch != EOF) {
           
            if(ch>='A' && ch<='Z') {
                counts[ch - 'A']++;
                m = max(m, counts[ch - 'A']);
            }
        }
   	getchar();
    }

可通过测试点1,3,4,在线ide测试却反而给出错误输出,个人推测为不同测试点使用换行符不同导致.

参考:传统题数据格式要求

2023/12/2 20:37
加载中...