T6题解
2025-06-01 22:09:39
发布于:浙江
44阅读
0回复
0点赞
T6(讲的细一点)其实暴力就完了
1.准备工作
#include<iostream>
using namespace std;
int main()
{
int n,a[14][14],cnt=0,c0=0,c1=0;
cin>>n;
for(int i=0;i<n;i++){
for(int j=0;j<n;j++)
cin>>a[i][j];
}
//主要部分
cout<<cnt;
return 0;
}
2.枚举所有子矩阵:对于每个可能的子矩阵,确定其行和列的范围。
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
for(int k=i;k<n;k++){
for(int l=j;l<n;l++){
//还有呢
}
}
}
}
3.判断平衡:如果0和1的数量相等,则该子矩阵是平衡的,计入总数。
c0=0;c1=0;
for (int x=i;x<=k;x++) {
for (int y=j;y<=l;y++) {
if (a[x][y]==0) {
c0++;
} else {
c1++;
}
}
}
if (c0==c1) {
cnt++;
}
完整代码:
#include<iostream>
using namespace std;
int main()
{
int n,a[14][14],cnt=0,c0=0,c1=0;
cin>>n;
for(int i=0;i<n;i++){
for(int j=0;j<n;j++)
cin>>a[i][j];
}
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
for(int k=i;k<n;k++){
for(int l=j;l<n;l++){
c0=0;c1=0;
for (int x=i;x<=k;x++) {
for (int y=j;y<=l;y++) {
if (a[x][y]==0) {
c0++;
} else {
c1++;
}
}
}
if (c0==c1) {
cnt++;
}
/////////
}
}
}
}
cout<<cnt;
return 0;
}
献上彩蛋
全部评论 1
1周前 来自 重庆
1
有帮助,赞一个