1 Star 0 Fork 0

LLL2343 / vJudge

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
201.cpp 2.31 KB
一键复制 编辑 原始数据 按行查看 历史
lll2343 提交于 2022-03-04 20:17 . 201
#include<iostream>
#include<string>
#include<cstdio>
// #include<stdio.h>
#include<vector>
#include<cstdlib>
#include<cstring>
using namespace std;
// std::ios::sync_with_stdio(false);
const int MAX_SIZE = 12;
int maze[MAX_SIZE][MAX_SIZE][2];
int ans[MAX_SIZE];
bool IsSequare(int i,int j,int k){
for(int p=0 ; p<k ; p++){
if( maze[i][j+p][0] == 0
|| maze[i+p][j][1] == 0
|| maze[i+k][j+p][0] == 0
|| maze[i+p][j+k][1] == 0)
{
return false;
}
}
return true;
}
int main(){
// freopen("./out.txt", "w", stdout);
int n,m,maze_i,maze_j;
char ch;
int count = 1;
while(cin >> n >> m){
// 初始化并读取输入构造矩阵
memset(maze,0,sizeof(maze));
memset(ans,0,sizeof(ans));
bool flag = false; // 是否有
for(int i=0;i<m;i++){
cin>>ch>>maze_i>>maze_j;
if(ch == 'H'){
// 第i行,j到j+1列连线
maze[maze_i][maze_j][0] = 1;
} else {
// 第i列 j到j+1行连线
maze[maze_j][maze_i][1] = 1;
}
}
// ij0表示第i行第j个点此点往右的横线
// ij1表示第i行第j个点此点往下的横线
// 下面便是在这个三维矩阵中进行判断了
// 现在是按边来存
for(int i=1;i<n;i++){
for(int j=1;j<n;j++){
if(maze[i][j][0] == 1 && maze[i][j][1]==1){
// 取到当前所能得到的最大矩形
int cur = n-i > n-j ? n-j : n-i;
for(int k=1;k<=cur;k++){
if(IsSequare(i,j,k)){
ans[k]++;
flag = true;
}
}
}
}
}
if(count > 1){
cout<<"\n**********************************\n\n";
}
cout<<"Problem #"<<count<<endl<<endl;
if(flag){
for(int i=1 ; i<n ; i++){
if(ans[i] != 0){
cout<<ans[i]<<" square (s) of size "<<i<<endl;
}
}
} else {
cout<<"No completed squares can be found.\n";
}
count++;
}
return 0;
}
1
https://gitee.com/lll2343/v-judge.git
git@gitee.com:lll2343/v-judge.git
lll2343
v-judge
vJudge
master

搜索帮助