社区讨论
题目换行符或使用不规范,可能导致错误
P1598[USACO03FEB] 垂直柱状图 Vertical Histogram参与者 2已保存回复 1
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 1 条
- 当前快照
- 1 份
- 快照标识符
- @lpo1h4fk
- 此快照首次捕获于
- 2023/12/02 20:37 2 年前
- 此快照最后确认于
- 2023/12/02 22:05 2 年前
使用如下代码,在本地与洛谷在线ide得到输出均与题解相同,但提交却无法通过
C#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;
}
将
C...
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']);
}
}
}
改为
C 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']);
}
}
}
或者
C 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测试却反而给出错误输出,个人推测为不同测试点使用换行符不同导致.
参考:传统题数据格式要求
回复
共 1 条回复,欢迎继续交流。
正在加载回复...