PAT里的锤子剪刀布 (20),报错,大神看看问题怎么改

简单忙 2017-11-19 12:27:57
在VS里运行好好的,复制粘贴到牛客上就上过不了

现给出两人的交锋记录,请统计双方的胜、平、负次数,并且给出双方分别出什么手势的胜算最大。
输入格式:
输入第1行给出正整数N(<=105),即双方交锋的次数。随后N行,每行给出一次交锋的信息,即甲、乙双方同时给出的的手势。C代表“锤子”、J代表“剪刀”、B代表“布”,第1个字母代表甲方,第2个代表乙方,中间有1个空格。
输出格式:
输出第1、2行分别给出甲、乙的胜、平、负次数,数字间以1个空格分隔。第3行给出两个字母,分别代表甲、乙获胜次数最多的手势,中间有1个空格。如果解不唯一,则输出按字母序最小的解。
代码
#include<stdio.h>

int main()
{
int n, i, js = 0, jp = 0, jy[3] = { 0 }, yy[3] = { 0 }//js甲胜,jp为甲平,jy(甲胜的招)中0是布,1是锤,2是剪
scanf("%d", &n);
char *j = (char*)malloc(sizeof(char)*n);
char *y = (char*)malloc(sizeof(char)*n);
for (i = 0; i < n; i++)
{
scanf("%s %s", &j[i], &y[i]);
}
for (i = 0; i < n; i++)
{
if ((j[i] == 'C'&&y[i] == 'J') || (j[i] == 'J'&&y[i] == 'B') || (j[i] == 'B'&&y[i] == 'C'))
{
if (j[i] == 'C'&&y[i] == 'J')
jy[1]++;
else if (j[i] == 'J'&&y[i] == 'B')
jy[2]++;
else if (j[i] == 'B'&&y[i] == 'C')
jy[0]++;
js++;
}
else if ((j[i] == 'C'&&y[i] == 'B') || (j[i] == 'J'&&y[i] == 'C') || (j[i] == 'B'&&y[i] == 'J'))
{
if (j[i] == 'C'&&y[i] == 'B')
yy[0]++;
else if (j[i] == 'J'&&y[i] == 'C')
yy[1]++;
else if (j[i] == 'B'&&y[i] == 'J')
yy[2]++;
}
else
jp++;

}
printf("%d %d %d\n", js, jp, n - js - jp);
printf("%d %d %d\n", n - js - jp, jp, js);
if (jy[0] >= jy[1] || jy[0] >= jy[2])
printf("B");
else if (jy[0] < jy[1] || jy[1] >= jy[2])
printf("C");
else
printf("J");
if (yy[0] >= yy[1] || yy[0] >= jy[2])
printf(" B");
else if (yy[0] < yy[1] || yy[1] >= yy[2])
printf(" C");
else
printf(" J");
return 0;
}
C入门新手,多多指教,不胜感激

...全文
82 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
大米粥哥哥 2017-11-19
  • 打赏
  • 举报
回复
没找到malloc? 加个它的头文件试试

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧