您的位置:首页 > 其它

uva201

2016-01-11 12:04 281 查看
题目看错,按照我自己的理解是:

/*
ID: Ben biss
PROG: #####
LANG: C++
*/
#include<stdio.h>
#include <iostream>
using namespace std;
#include<cstring>
#include <fstream>
#include<cmath>
#include<string>
#include<cstdlib>
#include<algorithm>
#include<stack>
#include<vector>
#include<map>
#include<queue>
#define FOR(i,n) for(i=0;i<n;i++)
#define cmem(a) memset(a,'/0',sizeof(a))
#define imem(a) memset(a,0,sizeof(a))
//#define cin fin
//#define cout fout

struct bb{
int H;
int V;
}doc[20][20];

int pan(int x,int y,int x1,int y1)
{
int i,j;
for(i=x;i<x1;i++)
if((doc[i][y].V!=1)||(doc[i][y1].V!=1))return 0;
for(j=y;j<y1;j++)
if((doc[x][j].H!=1)||(doc[x1][j].H!=1))return 0;
return 1;
}

int ans[1000];

int main()
{
//ofstream fout ("#####.out");
//ifstream fin ("#####.in");
int i,j,k,flag=0,num,longt,x,y;
char a;
bool judg;
while(cin>>longt)
{
memset(ans,0,sizeof(ans));
cin>>num;
for(i=0;i<num;i++)
{
cin>>a;
cin>>x>>y;
if(a=='H')doc[x][y].H=1;
else doc[x][y].V=1;
}
for(i=1;i<=longt;i++)
{
for(j=1;j<=longt;j++)
{
for(k=1;(k+i<=longt)&&(k+j<=longt);k++)
{
if(pan(i,j,i+k,j+k))judg=true,ans[k]++;
}
}
}
if(flag)printf("\n**********************************\n");
printf("Problem #%d\n\n",++flag);
if(judg)
{
for(i=1;i<=longt;i++)
{
if(ans[i])printf("%d square (s) of size %d\n",ans[i],i);
}
}
else
{
printf("No completed squares can be found.");
}
}

return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: