题目原内容:程序填空,不要改变与输入输出有关的语句。输入一个正整数repeat(0
题目原内容:
程序填空,不要改变与输入输出有关的语句。
输入一个正整数repeat (0
输入 1 个正整数 n和n 阶方阵a中的元素,如果找到a 的鞍点(鞍点的元素值在该行上最大, 在该列上最小), 就输出它的下标, 否则,输
出"NO"(设a最多有1个鞍点)。
例:括号内是说明
输入:
2 (repeat=2)
4 1 7 4 1 4 8 3 6 1 6 1 2 0 7 8 9 (n=4)
2 1 7 4 1 (n=2)
输出:
a[2][1]=6
NO
参考答案:
import java.util.Scanner;
public class Test60019{
public static void main(String []args){
int ri, repeat;
int i,j,k,row,col,n,a[][];
boolean flag;
Scanner in=new Scanner(System.in);
repeat=in.nextInt();
for(ri=1; ri<=repeat; ri++){
n=in.nextInt();
a=new int[n][n];
for (i=0;i
for (j=0;j
a[i][j]=in.nextInt();
/*---------*/
row=0;col=0;
flag=false;
for(i=0;i
col=0;
for(j=0;j
if(a[i][j]>a[i][col])
col=j;
row=i;
for(k=0;k
if(a[k][col]
if(row==i) {
flag=true;
break;
}
}
if(flag)
System.out.println("a["+row+"]["+col+"]="+a[row][col]);
else
System.out.println("NO");
}
}
}
我不是很理解一个地方:一开始i的值给了row,然后k的值也给了row,
那么i的值不是被覆盖掉了么,为什么在最后面的if判断里还是在判断row==i ???
展开