注:要找出整行整列或对角线是0和1,我们可以对其和进行判断,为0时,则和为;为1时,则说明其和为m.length
import java.util.*;
/*
1.提示用户输入尺寸 创建方阵
2.随机给方阵填入0和1
3.让行,列,对角线累加 sum==0 sum==size 表示全相等
*/
class test12{
public static void main(String[] args){
//1.提示用户输入尺寸 创建方阵
Scanner scanner=new Scanner(System.in);
System.out.print("请输入尺寸");
int size=scanner.nextInt();
int[][] m=new int[size][size];
//2.随机给方阵填入0和1
Random random=new Random();
for(int i=0;i<size;i++){//遍历方阵
for(int j=0;j<size;j++){
m[i][j]=random.nextInt(2);
System.out.print(m[i][j]+" ");
}
System.out.println();
}
//3.让行,列,对角线累加 sum==0 sum==size 表示全相等
checkRow(m);//行
checkCol(m);//列
checkDiagonal(m);//主对角
checkSubDiagonal(m);//副对角
}
public static void checkRow(int[][] m){
for(int i=0;i<m.length;i++){
int sum=0;
for(int j=0;j<m[0].length;j++){
sum+=m[i][j];
}
if(sum==0||sum==m.length){
System.out.printf("第%d行全相等且是%d\n",i+1,sum==0?0:1);
}
}
}
public static void checkCol(int[][] m){
for(int j=0;j<m[0].length;j++){
int sum=0;
for(int i=0;i<m.length;i++){
sum+=m[i][j];
}
if(sum==0||sum==m.length){
System.out.printf("第%d列全相等且是%d\n",j+1,sum==0?0:1);
}
}
}
public static void checkDiagonal(int[][] m){
int sum=0;
for(int i=0;i<m.length;i++){
sum+=m[i][i];
}
if(sum==0||sum==m.length){
System.out.printf("主对角相等且是%d\n",sum==0?0:1);
}
}
public static void checkSubDiagonal(int[][] m){
int sum=0;
for(int i=0;i<m.length;i++){
sum+=m[i][m.length-1-i];
}
if(sum==0||sum==m.length){
System.out.printf("副主对角相等且是%d\n",sum==0?0:1);
}
}
}
注:如下图分析 如果要出现连续相等的情况,就必须满足以下四个条件中的一个
import java.util.*;
class test13{
public static void main(String[] args){
Scanner scanner=new Scanner(System.in);
System.out.print("请输入行和列");
int row=scanner.nextInt();
int col=scanner.nextInt();
int[][] m=new int[row][col];
for(int i=0;i<row;i++){
for(int j=0;j<col;j++){
m[i][j]=scanner.nextInt();
}
}
System.out.println(isConsecutiveFour(m));
}
public static boolean isConsecutiveFour(int[][] m){
for(int i=0;i<m.length;i++){
for(int j=0;j<m[i].length;j++){
//向右
if(j<=m[i].length-4){
boolean flag=true;
for(int c=j+1;c<=j+3;c++){
if(m[i][j]!=m[i][c]){
flag=false;
break;
}
}
if(flag){
return true;
}
}
//向下
if(i<=m.length-4){
boolean flag=true;
for(int r=i+1;r<=i+3;r++){
if(m[i][j]!=m[r][j]){
flag=false;
break;
}
}
if(flag){
return true;
}
}
//向右下
if(i<=m.length-4&&j<=m[0].length){
boolean flag=true;
for(int r=i+1,c=j+1;r<=i+3;r++,c++){
if(m[i][j]!=m[r][c]){
flag=false;
break;
}
}
if(flag){
return true;
}
}
//向右上
if(i>=3&&j<=m[0].length-4){
boolean flag=true;
for(int r=i-1,c=j+1;c<=j+3;r--,c++){
if(m[i][j]!=m[r][c]){
flag=false;
break;
}
}
if(flag){
return true;
}
}
}
}
return false;//四个方向都没有连续的
}
}