uva201

題目看錯,按照我自己的理解是:

/*
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;
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章