刷题记录--UVa201 Squares

Posted hardworkingshow

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了刷题记录--UVa201 Squares相关的知识,希望对你有一定的参考价值。

  这道题做了一个多小时,又调了一个多小时,提交了好几次,终于ac,可见刚刚入坑一个月的自己代码水平之低下。

  主要问题有两个,一个是把V和H搞反,半天也没看出来问题,另一个是输出的格式问题,这也导致我wa了好几次。

  下面是AC的码

#include<cstdio>
//#define LOCAL
#include<cstring>
#include<iostream>
using namespace std;

int H[12][12],V[12][12];

void input(int m){
    char ch;
    int a,b;
    for(int i=0;i<m;i++){
        cin>>ch>>a>>b;
        if(ch==H)V[a-1][b-1]=1;
        if(ch==V)H[b-1][a-1]=1;
    }
}

bool check(int x,int j,int k){
    for(int a=0;a<x;a++){
        if(!H[j+a][k]||!H[j+a][k+x])return false;
        if(!V[j][k+a]||!V[j+x][k+a])return false;
    }
    return true;    
}

int main(){
#ifdef LOCAL
freopen("input.txt","r",stdin);
#endif
    int m,n,kase=0,cnt=0,none=1,first=1;
    while(scanf("%d%d",&n,&m)==2){
        if(first)first=0;
        else printf("
**********************************

");
        printf("Problem #%d

",++kase);
        memset(H,0,sizeof(H));
        memset(V,0,sizeof(V));
        input(m);
        //debug
//        cout<<"**debug**"<<endl;
//        for(int i=0;i<12;i++){
//            for(int j=0;j<12;j++){
//                printf("%d ",V[i][j]);
//            }
//            cout<<endl;
//        }
//        cout<<"**debug**"<<endl;
        //debug
        for(int i=1;i<=n-1;i++){        //i代表size 
            cnt=0;
            for(int j=0;j<12;j++){      //我在V上搜索,从第一行到最后,j是行数 
                for(int k=0;k<12;k++){  //k是列数 
                    if(check(i,j,k))cnt++;
                    //debug
//        cout<<"**debug**"<<endl;
//        cout<<cnt<<endl;
//        cout<<"**debug**"<<endl;
                    //debug
                }
            }
            if(cnt){
                printf("%d square (s) of size %d
",cnt,i);
                none=0;
            }
        }
        if(none)printf("No completed squares can be found.
");
        none =1;
    }
    return 0;
}

 

以上是关于刷题记录--UVa201 Squares的主要内容,如果未能解决你的问题,请参考以下文章

习题 4-2 Uva201Squares

UVA 4728 Squares(凸包+旋转卡壳)

习题 7-6 UVA - 12113Overlapping Squares

UVa 1643 Angle and Squares (计算几何)

UVA - 12113 Overlapping Squares(dfs+回溯)

刷题记录--UVa815 Flooded!