uva201 squares
程序员文章站
2022-03-30 09:00:58
...
连线数正方形问题,题意很简单
简单模拟
延伸那块写的有点问题,有点毛躁,交了很多次
#include <iostream>
#include<string>
#include<string.h>
#include<algorithm>
#include<limits>
#include<stdio.h>
#include<stdlib.h>
using namespace std;
//每个顶点往右下搜
//矩阵存的是【0】与右边是否有边,【1】与下是否有边
int num[10];
int maze[11][11][2];
void initia(){
memset(num,0,sizeof(num));
memset(maze,0,sizeof(maze));
}
void print(){
bool f=false;
for(int i=1;i<=9;i++){
if(num[i]==0)continue;
f=true;
cout<<num[i]<<" square (s) of size "<<i<<endl;
}
if(!f)cout<<"No completed squares can be found."<<endl;
}
int main()
{
int N,M,a,b,n=1;
char c;
while(cin>>N>>M){
initia();
for(int i=0;i<M;i++){
cin>>c;
cin>>a>>b;
if(c=='H'){
maze[a][b][0]=1;
}else if(c=='V'){
maze[b][a][1]=1;
}
}
//一开始下面这一部分没想清楚,忘记了上下左右有4条边
for(int i=1;i<=N;i++){
for(int j=1;j<=N;j++){
if(maze[i][j][0]==0||maze[i][j][1]==0)continue;
for(int k=1;k<=N-max(i,j);k++){
if(maze[i+k-1][j][1]==0||maze[i][j+k-1][0]==0)break;
bool ff=false;
for(int p=0;p<k;p++){
if(maze[i+p][j+k][1]==0||maze[i+k][j+p][0]==0)ff=true;
}
if(ff)continue;
if(maze[i+k][j][0]==1&&maze[i][j+k][1]==1){
num[k]++;
}
}
}
}
if(n!=1)cout<<endl<<"**********************************"<<endl<<endl;
cout<<"Problem #"<<n<<endl<<endl;
n++;
print();
}
return 0;
}
上一篇: vue中的watch
下一篇: Activity之间传递数据
推荐阅读
-
LeetCode977.Squares of a Sorted Array
-
有序数组的平方(Squares of a Sorted Array)javascript
-
cf314E. Sereja and Squares(dp)
-
【题解】 LGP2730 【魔板 Magic Squares】
-
⭐⭐⭐⭐⭐【BFS求最小次数】LeetCode 279. Perfect Squares
-
USACO 1.2.4 Palindromic Squares
-
Uva 201 Squares (暴力 + 枚举)
-
UVa1643 - Angle and Squares
-
UVa201 Squares(正方形)
-
uva 201 squares