一道杭州online judge的2022题,一直不能过,请高手看看。
代码如下:#include<stdio.h>#include<math.h>intmain(){intm,n,i,j,max,maxt,maxi,maxj;ints;wh...
代码如下:
#include<stdio.h>
#include<math.h>
int main()
{
int m, n, i, j, max, maxt, maxi, maxj;
int s;
while(scanf("%d%d",&m,&n))
{
maxt = max = 0;
maxi = maxj = 1;
for (i=1; i<=m; i++)
for (j=1; j<=n; j++)
{
scanf("%d",&s);
if (max < fabs(s))
{
max = fabs(s);
maxt = s;
maxi = i;
maxj = j;
}
}
printf("%d %d %d\n",maxi,maxj,maxt);
}
return 0;
}
地址:http://acm.hdu.edu.cn/showproblem.php?pid=2022 展开
#include<stdio.h>
#include<math.h>
int main()
{
int m, n, i, j, max, maxt, maxi, maxj;
int s;
while(scanf("%d%d",&m,&n))
{
maxt = max = 0;
maxi = maxj = 1;
for (i=1; i<=m; i++)
for (j=1; j<=n; j++)
{
scanf("%d",&s);
if (max < fabs(s))
{
max = fabs(s);
maxt = s;
maxi = i;
maxj = j;
}
}
printf("%d %d %d\n",maxi,maxj,maxt);
}
return 0;
}
地址:http://acm.hdu.edu.cn/showproblem.php?pid=2022 展开
1个回答
展开全部
我在网站上提交了你的代码,结果是TLE(1000ms),其实你的问题并不在算法上,问题出在了一个很小的细节上!
只需将你的程序改动一处,就可以AC(15ms)了:
将 “while(scanf("%d%d",&m,&n))”
改为 “while(scanf("%d%d",&m,&n)!=EOF)”
或者 “while(scanf("%d%d",&m,&n)!=-1)”
是不是觉得很郁闷?其实,在ACM中,往往都是一些很小很小的错误让人整得很
“纠结”!
----------------------------------------
问题拓展:
相关的输入结束符:
函数名 结束符
scanf() ----> EOF(即:-1)
getchar() ----> NULL
好了,如果还有什么问题,还可以提出来
只需将你的程序改动一处,就可以AC(15ms)了:
将 “while(scanf("%d%d",&m,&n))”
改为 “while(scanf("%d%d",&m,&n)!=EOF)”
或者 “while(scanf("%d%d",&m,&n)!=-1)”
是不是觉得很郁闷?其实,在ACM中,往往都是一些很小很小的错误让人整得很
“纠结”!
----------------------------------------
问题拓展:
相关的输入结束符:
函数名 结束符
scanf() ----> EOF(即:-1)
getchar() ----> NULL
好了,如果还有什么问题,还可以提出来
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询