棋盘覆盖问题

#include<stdio.h>
#define max 17
int data[max][max];
int t;
int erfen(int i,int j,int sx,int sy,int n)
{
 if(n==1)return;
 n=n/2;int num;num=t++;
 if(sx<i+n && sy<j+n)
   erfen(i,j,sx,sy,n);
 else
   data[i+n-1][j+n-1]=num,erfen(i,j,i+n-1,j+n-1,n);
 if(sx<i+n && sy >=j+n)
   erfen(i,j+n,sx,sy,n);
 else
 data[i+n-1][j+n]=num,erfen(i,j+n,i+n-1,j+n,n);
 if(sx>=i+n && sy<j+n)
   erfen(i+n,j,sx,sy,n);
 else
 data[i+n][j+n-1]=num,erfen(i+n,j,i+n,j+n-1,n);
 if(sx>=i+n && sy>=j+n)
  erfen(i+n,j+n,sx,sy,n);
 else
   data[i+n][j+n]=num,erfen(i+n,j+n,i+n,j+n,n);

}
chushihua(int a[][],int n)
{
              int i,j;
              for(i=1;i<=n;i++)
              for(j=1;j<=n;j++)
              data[i][j]=0;
              return;}
int main()
{
 int sx,sy,i,j,n,s;
 while(scanf("%d %d %d",&sx,&sy,&n)!=EOF)
 {
 chushihua(data,n);
 t=1;
 i=1,j=1;
 s=n+1;
 erfen(i,j,sx,sy,n);
 for(i=1;i<s;i++)
{
 for(j=1;j<s;j++)
 printf("%d ",data[i][j]);
 printf("\n");
 }
}
  return 0;
 system("pause");
 }

 

由于这个代码有点乱,发上去之后处理有点问题,所以不用代码框,而直接发吧

你可能感兴趣的:(棋盘覆盖问题)