杭电acm2022

来源:百度知道 编辑:UC知道 时间:2024/05/25 05:53:13
#include<iostream>
#include<cmath>
using namespace std;
int main()
{
int a,b,pos1,pos2,i,j;
double max=0,array[100][100];
while(cin>>a>>b)
{
for(i=1;i<=a;i++)
{
for(j=1;j<=b;j++)
{
cin>>array[i][j];
if(fabs(array[i][j])>=fabs(max))
{
max=array[i][j];
pos1=i;
pos2=j;
}
}
}
cout<<pos1<<" "<<pos2<<" "<<max<<endl;
}
return 0;
}
这个代码错哪了???
不要新代码,只要改正,谢谢!!!

两个错误:
第一个是max没有初始化,每次输完a和b后都要初始化max=0;
第二个是fabs(array[i][j])>=fabs(max))这里不应该用>=号,而用大于号.
#include<iostream>
#include<cmath>
using namespace std;
int main()
{
int a,b,pos1,pos2,i,j;
double max=0,array[101][101];
while(cin>>a>>b)
{
max = 0;
for(i=1;i<=a;i++)
{
for(j=1;j<=b;j++)
{
cin>>array[i][j];
if(fabs(array[i][j])>fabs(max))
{
max=array[i][j];
pos1=i;
pos2=j;
}
}
}
cout<<pos1<<" "<<pos2<<" "<<max<<endl;
}
return 0;
}
优化:
可以不开那么大的数组
#include <iostream>
#include <cmath>
using namespace std;

int main()
{
int i,j,
n,m,
x,y,
r,s;
while(scanf("%d %d",&n,&m)!=EOF)
{
s = 0;
for(i=1; i<=n; i++)