本帖最后由 邵震 于 2013-4-6 06:40 编辑
/**
找出具有m行n列二维数组Array的“鞍点”,即该位置上的元素在该行上最大,在该列上最小,其中1<=m,n<=10。
输入数据有多行,第一行有两个数m和n,下面有m行,每行有n个数。
按下列格式输出鞍点:Array[j]=x
其中x代表鞍点,i和j为鞍点所在的数组行和列下标,我们规定数组下标从0开始。
一个二维数组并不一定存在鞍点,此时请输出None
我们保证不会出现两个鞍点的情况,比如:
3 3
1 2 3
1 2 3
3 6 8
样例输入
3 3
1 2 3
4 5 6
7 8 9
样例输出
Array[0][2]=3
思路:
创建一个包含四个一维数组的二维数组,每个包含3个元素。
把从1到12的数字挨个输入进去,并打印出横三竖四的矩形。
用for语句进行双循环 外圈进行一维数组数组间的切换,内圈一进行横列取最大值循环,内圈二进行竖列取最小值循环,,
当求得横列最大之后进行外圈循环,当循环一圈后最值不变,则跳出循环并打印
*/
class Java0405d2
{
public static void main(String[] args)
{
int a=1,b=0,temp=0,d=0,z=0;
int [][]arr = new int [4][3];
for (int x=0;x<4 ; x++)
{
for (int y=0;y<3 ;y++ )
{
arr[x][y]=a;
a++;
System.out.print(arr[x][y]+"\t");
}
System.out.println();
}
for (int x=0;x<4;x++ )
{
for (d=0;d<3;d++ )
{
if (temp<arr[x][d])
{
temp=arr[x][d];
}
}
b=arr[x][d];/*这里是为了记住第一个内循环找出的最值
为了和下一个循环的数进行对比 假如数值
不变就代表他是横排最大竖排最小的鞍值*/
for (z=0;z<4 ;z++ )
{
if (temp>arr[z][d])
{
temp=arr[z][d];
}
}
if (b==arr[z][d])
{
System.out.println(arr[z][d]);
break;
}
}
}
} |
|