正方形

来源:互联网 发布:vs 打开报表数据 编辑:程序博客网 时间:2024/04/29 10:52
<img src="http://img.blog.csdn.net/20160801141032344?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />
<img src="http://img.blog.csdn.net/20160801141058862?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" /><img src="http://img.blog.csdn.net/20160801141105128?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />
<pre name="code" class="cpp">#include<stdio.h>int main(void){//freopen("C:\\Users\\5201\\Desktop\\IN.txt","r",stdin);//freopen("C:\\Users\\5201\\Desktop\\IOUT.txt","w",stdout);int n,p=0;while(~scanf("%d",&n)){int sum,x,y,m,a[15]={0},H[10][10]={0},V[10][10]={0};//a数组里下标是正方形大小,存的是正方形个数//H,V分别存横纵坐标 char c;scanf("%d",&m); for(int i=1;i<=m;i++){getchar();//读上个换行符 scanf("%c %d %d",&c,&x,&y);if(c=='H')H[x][y]=1;//读到的标记为1 elseV[y][x]=1;}if(p)printf("\n**********************************\n\n");printf("Problem #%d\n\n",++p);sum=0;for(int i=1;i<=n;i++)//i表示边长 {for(int j=1;j<=n;j++)//点横坐标 {for(int k=1;k<=n;k++)//点纵坐标 {int f=1;for(int t=0;t<i;t++){if(H[j][k+t]==0||H[j+i][k+t]==0||V[j+t][k]==0||V[j+t][k+i]==0)//如果该正方形边长为零结束 {f=0;break;}}if(f==1)a[i]++; }}if(a[i])sum++; //记不同大小正方形的种类数 }if(sum==0)//一种都没输出结果 printf("No completed squares can be found.\n");else{for(int i=0;i<15;i++){if(a[i])printf("%d square (s) of size %d\n",a[i],i);}}}return 0;     //结束name:邱新磊 }


                                             
0 0
原创粉丝点击