UVa201
来源:互联网 发布:c语言软件测试 编辑:程序博客网 时间:2024/05/22 04:36
/*
本题按照题意,设置两个二维数组,分别记录水平连接和垂直连接即可。
最坑的地方在于垂直连接时候,是先输入列,再输入行,这点注意。
*/
#include<cstdio>
#include<iostream>
#include<algorithm>
#include<stdio.h>
#include<vector>
#include<utility>
#include<unordered_set>
#include<unordered_map>
#include<string.h>
using namespace std;
//#define nmax 10000
//auto fin=fopen("UVa.in","r");
//int cmp(const void *a,const void *b){return *(int *)a<*(int *)b;}
int vlink[11][11],hlink[11][11];
int is_squ(int x,int y,int v){
for(int i=x;i<x+v;++i){
if(vlink[i][y]==0||vlink[i][y+v]==0)return 0;
}
for(int i=y;i<y+v;++i){
if(hlink[x][i]==0||hlink[x+v][i]==0)return 0;
}
return 1;
}
void printm(){
for(int i=1;i<10;++i){
for(int j=1;j<10;++j)printf("%3d",hlink[i][j]+vlink[i][j]);
printf("\n");
}
}
int main()
{
char s[10];
int cnt[11];
int n,m,x,y,flag,kase=0;
while(scanf("%d%d",&n,&m)==2&&n){
flag=1;
memset(cnt,0,sizeof(cnt));
memset(vlink,0,sizeof(vlink));
memset(hlink,0,sizeof(hlink));
for(int i=0;i<m;++i){
scanf("%s%d%d",s,&x,&y);
if(s[0]=='H')hlink[x][y]=1;
if(s[0]=='V')vlink[y][x]=1;
}
//printm();
for(int x=1;x<n;++x){
for(int y=1;y<n;++y){
for(int v=1;v<=min(n-x,n-y);++v){
if(is_squ(x,y,v))++cnt[v];
}
}
}
if(kase++)printf("\n**********************************\n\n");
printf("Problem #%d\n\n",kase);
for(int i=1;i<n;++i){
if(cnt[i]>0){
flag=0;
printf("%d square (s) of size %d\n",cnt[i],i);
}
}
if(flag)printf("No completed squares can be found.\n");
}
return 0;
}
阅读全文
0 0
- UVa201
- UVa201
- uva201
- UVa201
- UVa201
- UVa201
- UVA201 Squares
- UVA201 - Squares
- Uva201 Squares
- UVa201 Squares
- UVA201-Squares
- Uva201正方形
- UVA201正方形
- Uva201 Squares
- UVa201 正方形
- uva201 Squares 记录
- uva201正方形squares
- UVa201 Squares 解题报告
- Liferay7.0的安装初始化与使用
- myeclipse10配置maven
- android aidl oneway用法
- 移动端上下滑动swiper,第二个页面内容大于屏幕尺寸,现在的问题是,超出部分无法通过滚动条下滑查看。
- Tornado
- UVa201
- dcloud------mui 点击底部选项卡,获取文本内容
- 五分钟让你全面理解ADO.NET连接池
- CBoard BI 数据可视化 支持国产开源
- 机器学习之决策树实现隐形眼镜预测
- 知识总结之 插件化学习 Hook系统方法分析
- 足迹001
- Python装饰器
- 怎么给linux加环境变量