java最大子方阵_Java实验(5) 最大子方阵
給定一個由0,1組成的n*n方陣(n在運行時提醒用戶輸入),判斷其中由全1組成的最大子方陣的左上角位置和階數。例如用戶輸入n為5,隨機產生的方陣如下:
程序的輸出為:最大子方陣位于(2,2),階數3。
要求編寫方法實現上述功能,返回值是一個包含3個元素的數組,依次表示行下標,列下標,階數。
方法原型:public static int[] findLargestBlock(int[][] m)
package maxsubmatrix;
import java.util.Scanner;
public class MaxSubMatrix {
public static void main(String[] args) {
Scanner input=new Scanner(System.in);
System.out.println("請輸入方陣維數n:");
int n=input.nextInt();
int [][] m=new int[n][n];
int []a=new int[3];
//產生一個n*n矩陣,元素為0或1并輸出
for(int i=0;i
for(int j=0;j
m[i][j]=(int)(Math.random()*10)%2;
System.out.print(m[i][j]+"\t");
}
System.out.print("\n");
}
a=findLargestBlock(m);
System.out.print("\n");
System.out.println("最大子方陣位于:("+a[0]+","+a[1]+")");
System.out.println("階數:"+a[2]);
}
//找到最大的全為1的矩陣塊
public static int[] findLargestBlock(int [][] m){
boolean t=true;
int []a=new int[3];
int n=m.length;
int i=0,j=0,l=0;
for(l=n;l>=1;l--){ //矩陣維數,從最大開始
for(i=0;i<=n-l;i++){
for(j=0;j<=n-l;j++){
t=true;
for(int x=i;x
for(int y=j;y
if(m[x][y]!=1){ //不為1退出此輪循環
t=false;
break;
}
}
if(t==false) break;
}
if(t==true) break;
}
if(t==true) break;
}
if(t==true) break;
}
a[0]=i;
a[1]=j;
a[2]=l;
return a;
}
}
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的java最大子方阵_Java实验(5) 最大子方阵的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 腊肠手撕包菜?
- 下一篇: 在入团志愿中能不能写“青团组织批准我入团