#include<iostream>
#include<iomanip>
using namespace std;
int main()
{
void array_sort(int array[][4]);
int i,j,
a[4][4]={4,2,3,1,5,6,7,8,16,9,10,11,12,13,14,15};
for(i=0;i<4;i++){
for(j=0;j<4;j++)
cout<<setw(8)<<a[i][j];
cout<<endl;
}
array_sort(a);
return 0;
}
void array_sort(int array[][4])
{
int i,j,a,row;
int max1=array[0][0],
max2=array[0][0],
max3=array[0][0];
for(i=0;i<4;i++){
for(j=0;j<4;j++)
if(array[i][j]>max1){
max1=array[i][j];//找出最大那个数
a=j; //记录行数
}
}
max2=array[0][a+1];//以MAX1的行数为列数
for(i=0;i<4;i++){
for(j=0;j<4;j++)
if(array[j][a]<max2){
max2=array[j][a]; //找出这列的最小数;
row=j; //记录该行数 --->这里,为什么保存不到 row=j ??
}
}
max3=array[row][1];//调试这里出错
for(i=0;i<4;i++){
for(j=0;j<4;j++)
if(array[row][j]>max3){ //对比该行,记录最大数
max3=array[row][j];
}
}
cout<<"max1:"<<max1<<endl
<<"max2:"<<max2<<endl
<<"max3:"<<max3<<endl;
if(max2==max3){ /。。。。。。。。对比
cout<<"最高鞍点是"<<max2<<endl;
}
else
cout<<"没有最高鞍点\n";
}
1 2 3 4 ------>4是鞍点
5 6 7 8
9 10 11 12
13 14 15 16
比如:1 先找到16是最大数(max1),然后记录max1在 array[i][j]的 a=j;
2 用array[][a]查找该列的最小数max2
3 在max2该行对比是否该数最大。
大家帮我看下哪错了?
为什么MAX2可以赋值,MAX3就有错误了呢?
题目是:找出一个二维数组的按点,即该位置上的元素在该行最大,在该列上最小的那个数(也可能没有鞍点);
[此贴子已经被作者于2007-7-24 19:34:09编辑过]