当前位置: 代码迷 >> Eclipse >> 马鞍子数 【二维数组】
  详细解决方案

马鞍子数 【二维数组】

热度:30   发布时间:2016-04-23 02:03:27.0
马鞍数 【二维数组】
求一个nXn数阵中的马鞍数,输出这的位置。所谓马鞍数,是指在行上最小而在列上最大的数。如下:(n=5)

5 6 7 8 9 

4 5 6 7 8 

3 4 5 2 1 

2 3 4 9 0 

1 2 5 4 8 

则1行1列上的数就是马鞍数。

输入

Input

第一行,一个数N 

接下来N行,每行N个数

输出

Output

输出马鞍数所在的行列

样例输入
5
5 6 7 8 9
4 5 6 7 8
3 4 5 2 1
2 3 4 9 0
1 2 5 4 8
样例输出
1 1
我的代码:应该怎样填补才正确啊
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner rd=new Scanner(System.in);
int n=rd.nextInt();
int arr[][]=new int[n][n];
int max=arr[0][0];
int min=arr[0][0];
int weizhi = 0;
for(int i=0;i<arr.length;i++)
{
for(int j=0;j<arr[i].length;j++)
{
arr[i][j]=rd.nextInt();
}
}
for(int i=1;i<arr.length;i++)
{
if(arr[0][i]<min)
{
min=arr[0][i];
System.out.print(min);
}
if(arr[i][0]>max)
{

}

}
System.out.print(max+" "+min);
}

------最佳解决方案--------------------
这个直接点的方法就找每行的最小,再判断它在该列是否是最大就可以啊。
比如你上面给出的数据,用一个二维数组记录每行最小的数的坐标。
int row_min[][]={{0,0},{1,0},{2,4},{3,4},{4,0}};
再用一个数组记录每列最大的数的坐标
int col_max[]={{0,0},{0,1},{0,2},{3,3},{0,4}};
在弄一个循环依次比较这2个数组的每队坐标。遇到相等就输出,因为相等即表示又是行最小又是列最大。
------其他解决方案--------------------
第二个数组该是[][]..
具体的找每组的最大最小应该不难写,就是循环比较就行,只是记录可能稍微麻烦一点,自己实践下。
  相关解决方案