uva201

建立两个数组存储横线和竖线,然后尺寸从1到n-1一步一步搜索就行了。

#include<bits/stdc++.h>
using namespace std;
bool pt[10][10],tv[10][10];
int n,m;
int cobe(int step)
{
    int sum=0;
    bool flag=true;
    for(int i=1; i<=n-step; i++)
    {
        for(int j=1; j<=n-step; j++)
        {
            for(int z=0; z<step; z++)
            {
                if(!tv[i][j+z]||!tv[i+step][j+z]||!pt[j][i+z]||!pt[j+step][i+z])
                {
                    flag=false;
                }
            }
            if(flag)
            {
                sum++;
            }
            flag=true;
        }
    }
    return sum;
}
int main()
{
    char c;
    int a,b,first=1,kase=0;
    while(cin>>n)
    {
        if(!first)
            cout<<endl<<"**********************************"<<endl<<endl;
        memset(tv,false,sizeof(tv));
        memset(pt,false,sizeof(pt));
        cin>>m;
        for(int i=0; i<m; i++)
        {
            cin>>c>>a>>b;
            if(c=='H')
            {
                tv[a][b]=true;
            }
            else if(c=='V')
            {
                pt[a][b]=true;
            }
        }
        if(first)
        {
            first=0;
        }
        cout<<"Problem #"<<++kase<<endl<<endl;
        bool ishave=false;
        for(int i=1; i<n; i++)
        {
            if(cobe(i))
            {
                ishave=true;
                cout<<cobe(i)<<" square (s) of size "<<i<<endl;
            }
        }
        if(!ishave)
            cout<<"No completed squares can be found."<<endl;

    }
}

上一篇:css 伪类 属性选择器


下一篇:C语言结构体