您的位置:首页 > 其它

CDOJ 25 点球大战(penalty) 解题报告

2016-07-12 00:24 483 查看
简单的字符串处理

坑点,有人可能没名字(名字为空)

有人名字可能为blablablano

但是因为输入保证最后五个字符为 good(前面有个空格)

因为如果输入意思是no good的话,no前面必须有一个空格

所以只需要判断倒数第6、7、8个字符是不是' '、'n'、'o'就可以了

当然,如果出现名字为空,结果为good,字符串长度达不到8,要判断一下字符串的长度

以上解决之后稍微关注一下输出格式就可以了

#include <cstdio>
#include <cstring>
using namespace std;

int t;
char info[105];
int len;
char result[2][20];
int score[2];

void initialize() {
memset(info, 0, sizeof info);
memset(result, 0, sizeof result);
memset(score, 0, sizeof score);
len = 0;
}

int main() {
while (~scanf("%d", &t) && t) {
initialize();
while (getchar() != '\n');
for (int i = 0; i < t; ++i) {
gets(info); len = strlen(info);
if (len > 8 && info[len - 8] == ' ' && info[len - 7] == 'n' && info[len - 6] == 'o')
result[i & 1][i >> 1] = 'X';
else result[i & 1][i >> 1] = 'O', ++score[i & 1];
}
for (int i = 1; i <= t + 1 >> 1; ++i) printf("%d ", i);
puts("Score");
if (t & 1) result[1][t >> 1] = '-';
for (int i = 0; i < 2; ++i) {
for (int j = 0; j << 1 < t; ++j)
putchar(result[i][j]), putchar(' ');
printf("%d\n", score[i]);
}
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: