java - 如何在java中获取方阵第二大元素的行和列位置
问题描述
给定一个 'n' 阶的方阵列表 [ ] [ ]。'n' 可能的最大值是 20。输入 'n' 的值和矩阵中的正整数,并打印矩阵第二大元素的行和列位置。
我得到了最大元素的位置。但是在获得第二大元素的位置时卡住了。代码如下-
import java.util.*;
class MatrixList
{
public static void main(String args[])
{
Scanner scan = new Scanner(System.in);
System.out.println("Enter the nber of rows");
int n = scan.nextInt();
if(n > 20)
{
System.out.println("number should not be greater than 20.");
}
else
{
int matrix[][] = new int[n][n];
int i,j,rowg,colg,rows,cols,flag1,flag2,k,t;
for(i=0;i<n;i++){
for(j=0;j<n;j++){
matrix[i][j] = scan.nextInt();
}
}
System.out.println("Orignal Matrix: ");
for(i=0;i<n;i++){
for(j=0;j<n;j++){
System.out.print(matrix[i][j] + " ");
}
System.out.println("");
}
flag1 = flag2 = matrix[0][0];
rowg = colg = rows = cols =0;
for(i=0;i<n;i++){
for(j=0;j<n;j++){
//checking greatest element
if(flag2 < matrix[i][j]){
flag2 = matrix[i][j];
rowg = i;
colg = j;
}
//checking second greatest element
**if(flag1 < matrix[i+1][j+1]){
flag1 = matrix[i+1][j+1];
rows = i;
cols = j;
}**
}
}
for(i =0; i<n;i++){
for(j=0;j<n;j++){
for(k=j+1;k<n;k++){
if(matrix[i][j] > matrix[i][k]){
t = matrix[i][j];
matrix[i][j] = matrix[i][k];
matrix[i][k] = t;
}
}
}
}
System.out.println("The largest element "+flag2+" is in row "+(rowg+1)+" and column "+(colg+1));
System.out.println("The smallest element "+flag1+" is in row "+(rows+1)+" and column "+(cols+1));
System.out.println("Sorted Matrix: ");
for(i=0;i<n;i++){
for(j=0;j<n;j++){
System.out.print(matrix[i][j] + " ");
}
System.out.println();
}
}
}
}
解决方案
推荐阅读
- java - 在 JPanel 中对齐 JTextField、JLabels 和 JButton
- css - 如何在 CSS 中强制使用相同数量的文本?
- html - 每个浏览器的背景图都不一样,哪个是正确的?
- angular - HttpInterceptor 不适用于延迟加载的模块
- json - 在 spark scala 中删除 json 解析中的重复属性
- python - Chromedriver/Selenium 问题
- java - 使用 .endsWith() 语句进行条件检查
- spring - 使用 Spring Data JPA 获取时双向 OneToMany 关系中的重复实体
- regex - Mongo DB 按日期搜索事件
- javascript - JavaScript:需要输入元素以根据输入的数据更改选项