刷题记录--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的主要内容,如果未能解决你的问题,请参考以下文章
习题 7-6 UVA - 12113Overlapping Squares
UVa 1643 Angle and Squares (计算几何)