UVA201——Squares

#include <iostream>

#include <stdio.h>

#include <string.h>

using namespace std;

 

int board[19][19];

 

 

int main()

{

    int n;

扫描二维码关注公众号,回复: 2353689 查看本文章

    int times=0;

    while(scanf("%d",&n)!=EOF){

        times++;

        int amount;

        cin>>amount;

        memset(board,0,sizeof(board));

        for(int i=0;i<amount;i++){

            char direc;

            int x,y;

            cin>>direc>>x>>y;

            x--;

            y--;

            if(direc=='H'){

                board[2*x][2*y+1]=1;

            }else{

                board[2*y+1][2*x]=1;

            }

        }//输入完全正确

        int res[9];

        memset(res,0,sizeof(res));

        //下标+1为正方形边长//存储正方形数量,初始为0;

        for(int i=0;i<2*n-3;i+=2){

            for(int j=0;j<2*n-3;j++){

               for(int tn=1;tn<n;tn++){

                    int flag=1;

                    for(int t=0;t<tn;t++){

                        flag*=board[i+1+2*t][j];

                        flag*=board[i][j+1+2*t];

                        flag*=board[i+2*tn][j+1+2*t];

                        flag*=board[i+1+2*t][j+2*tn];

                        if(flag==0){

                            break;

                        }

                    }

                    if(flag){

                        res[tn-1]++;

                    }

               }

            }

        }

        if(times!=1){

            printf("\n**********************************\n\n");

        }

        printf("Problem #%d\n\n",times);

        int fr=1;

        for(int i=0;i<n;i++){

            if(res[i]!=0){

                fr=0;

                printf("%d square (s) of size %d\n",res[i],i+1);

            }

        }

        if(fr){

            printf("No completed squares can be found.\n");

        }

    }

    return 0;

}

 

 

 

这道题还算简单,模拟边直接解决。

先选择一个顶点,再看这个顶点能否作为边长为1,2,……正方形的左上顶点,发现符合的记录即可

 

有一点诡异的是,最多只有9个顶点,数组按理说定义为17*17即可,但是这样一定会WA,要定义更大的数组才行。鄙人不才,不解,但为保险起见,以后要定义更充裕的空间才是上策。

 

猜你喜欢

转载自blog.csdn.net/shadowfox_/article/details/81158715
201