【求助】看看哪里错了?

殇翔 2013-12-19 06:25:45
Input
输入第一行是一个T 代表有多少组测试数据
每组测试数据的第一行是一个整数n,代表该局比赛有几个玩家
接下来有n行,每行是三个整数 a:b:c
其中第一行为我的成绩

Output
对于每一组输入,输出一个整数,也就是我在该局比赛的名次(ranking)。

Sample Input
1
3
2:02:123
2:03:000
2:02:124



#include<stdio.h>
int main()
{
int t,i,n,m,sum;
int a[100],b[100],c[100];
char op;
scanf("%d",&t);
for(i=1;i<=t;i++)
{
sum=0;
scanf("%d",&n);
for(m=0;m<n;m++)
{
scanf("%d%c%d%c%d",&a[m],&op,&b[m],&op,&c[m]);
}
for(m=1;m<=n;m++)
{
if(a[0]<a[m])
n--;
}
for(m=1;m<=n;m++)
{
if(a[0]==a[m])
if(b[0]<b[m])
n--;
}
for(m=1;m<=n;m++)
{
if(b[0]==b[m])
if(c[0]<c[m])
n--;
}
printf("%d\n",n);
}
return 0;
}





...全文
480 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
ws_yqr 2013-12-19
  • 打赏
  • 举报
回复
for(m=1;m<=n;m++)应该是m<n吧,a[n]是第n+1组数据了,你只有n组数据,a[n]的值是随机的。
大奶兔白糖 2013-12-19
  • 打赏
  • 举报
回复
好像逻辑有点问题啊。三次循环比较都是从0比较到n-1,虽然n记录了不比你大的数量,但是没有记录位置。也就是假如你的第一个数字是2,你的下一行输入的第一个数字是3,理论上你以后不应该和下一行比较了,但是你后面还会和下一行比较b数组的值,而你真正需要比较的值反而有可能会被错过。 楼主可以自己单步跟踪一下代码试试看。
殇翔 2013-12-19
  • 打赏
  • 举报
回复
Sample Output 1

64,642

社区成员

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

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