【正经题解】黑白方块
2025-11-29 09:44:12
发布于:浙江
18阅读
0回复
0点赞
好题,推荐大家都来做做(
@忘川秋库
@++c吧蛋滚
别复制题解。
题目大意:
一共 次询问,每次询问会给你一个 的矩阵,你需要判断这个矩阵是否存在一个 的子矩阵且满足以下要求:
- 子矩形由4行4列组成;
- 子矩形的第1行和第4行只包含白色格子;
- 对于子矩形的第2行和第3行,只有第1个和第4个格子是白色的,其余格子都是黑色的;
就是说直接判断就行
#include <bits/stdc++.h>
using namespace std;
int t,n,m;
char sz[1005][1005];
int main(){
cin >> t;
while(t--){
cin >> n >> m;
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
cin >> sz[i][j];
}
}if(n<4 or m<4){
cout << "No\n";
continue;
}bool p=false;
for(int i=1;i<=n-3;i++){
for(int j=1;j<=m-3;j++){
if((sz[i][j]=='0' and sz[i+1][j]=='0' and sz[i+2][j]=='0' and sz[i+3][j]=='0' and sz[i][j+3]=='0' and sz[i+1][j+3]=='0' and sz[i+2][j+3]=='0' and sz[i+3][j+3]=='0') and sz[i][j+1]=='0' and sz[i+3][j+1]=='0' and sz[i][j+2]=='0' and sz[i+3][j+2]=='0' and sz[i+1][j+1]=='1' and sz[i+2][j+1]=='1' and sz[i+1][j+2]=='1' and sz[i+2][j+2]=='1'){
p=true;
}
}
}if(p==false)cout << "No\n";
else cout << "Yes\n";
}
return 0;
}
时间复杂度 ,不做解释
空间复杂度 ,不做解释
这里空空如也







有帮助,赞一个