思路及代码
蛮力算法 验证是否是正方形的方法是简单的
但是蛮力下来写的不优雅
第一版超时了,第二版改了一点点,把一个循环换成了加加减减
#include<iostream>
using namespace std;
int main(){
//input R,C int 1<= <=200
//input R*C矩阵
int R,C;
cin >> R >> C;
int list[R][C];
for (int i = 0; i <= R-1; i++){
for (int j = 0; j <= C-1; j++){
cin >> list[i][j];
}
}
//solution
int a = (R <= C ? R : C);
while (a >= 1){
int row = 0, col;
int sum;
int flag = 0;
while (row+a-1 <= R-1){
col = 0;
sum = 0;
while(col+a-1 <= C-1){
for (int m = row; m <= row+a-1; m++){
if (col == 0){//初始
for (int n = 0; n <= a-1; n++){
sum += list[m][n];
}
}else{//加加减减
sum -= list[m][col-1];
sum += list[m][col+a-1];
}
}
if (sum == a*a || sum == 0){
cout << a*a <<endl;
flag = 1;
break;
}else{
col++;
}
}
if (flag == 1){
break;
}else{
row++;
}
}
if (flag == 1){
break;
}else{
a--;
}
}
//output a*a
return 0;
}
参考:1️⃣跳出两层for循环d的三种简单方法_两层for语句 内循环怎么跳出-CSDN博客
收获:无
菜菜,不是教程,做题和学习记录