这个题用个二维数组然后进行比较,找出绝对值最大的,输出位置和值就行了 。我用的方法是用vector容器,申请一个动态数组,因为C++不能申请未知大小的数组,而本题数组大小m,n需要输入,因此我就用了STL中的vector。
#include<iostream>
#include<algorithm>
#include<vector>
using namespace std;
int main()
{
int m,n;
while(cin>>m>>n)
{
//用vector容器申请一个m*n的动态数组,并初始化为0
vector<vector<int> >MM(m,vector<int>(n,0));
int max=0,signm=0,signn=0;
for(int i=0;i<m;i++)
{
for(int j=0;j<n;j++)
{
cin>>MM[i][j];
//比较绝对值的大小,将大的放入max中,并记录大的位置
if(abs(max)<abs(MM[i][j]))
{
max=MM[i][j];
signm=i;signn=j;
}
}
}
cout<<signm+1<<' '<<signn+1<<' '<<max<<endl;
}
}
当然,也可以直接动态申请数组:
C:
#include<malloc.h>
int **a=(int **)malloc(m*sizeof(int *));
for(int i=0;i<m;i++)
a[i]=(int *)malloc(n*sizeof(int));
C++:
int **a=new int*[m];
for(int i=0;i<m;i++) a[i]=new int[n];