拉丁数列

来源:互联网 发布:百度地图云检索数据库 编辑:程序博客网 时间:2024/05/17 03:40
main(){
int a[9][9]={0};
int N,k=0;
int  i=0,j;
printf("输入N:");
scanf("%d",&N);
if(!(2<=N&&N<=9))
  {printf("erre");
  exit(0);}
  for(i=0;i<N;i++)
   {    
    for(j=0;j<N;j++)
     { k=i+j;
      if(N<=k)
       k=k-N;
      switch(k){
       case 0: a[i][j]=1;break;
       case 1: a[i][j]=2;break;
       case 2: a[i][j]=3;break;
       case 3: a[i][j]=4;break;
       case 4: a[i][j]=5;break;
       case 5: a[i][j]=6;break;
       case 6: a[i][j]=7;break;
       case 7: a[i][j]=8;break;
       case 8: a[i][j]=9;break;
       case 10: a[i][j]=1;break;
       case 11: a[i][j]=2;break;
       case 12: a[i][j]=3;break;
       case 13: a[i][j]=4;break;
       case 14: a[i][j]=5;break;
       case 15: a[i][j]=6;break;
       case 16: a[i][j]=7;break;
       case 17: a[i][j]=8;break;
       case 18: a[i][j]=9;break;      }     
   }
 
}
for(i=0;i<N;i++){
 for(j=0;j<N;j++)
  {
  printf("%d ",a[i][j]);
   }
 printf("/n") ;
 }
 }
/*该方法代码长,时间复杂度大为2*n的2次方,占内存大,是容易的解法*/

 

 

main(){
int a[9][9]={0};
int N,k=0;
int  i=0,j;
printf("输入N:");
scanf("%d",&N);
if(!(2<=N&&N<=9))
  {printf("erre");
  exit(0);}
  for(i=0;i<N;i++)
   {    
    for(j=0;j<N;j++)
     { k=i+j;
       if(k<N)
         a[i][j]=k+1;    
       else a[i][j]=k+1-N;      
   }
 
}
for(i=0;i<N;i++){
 for(j=0;j<N;j++)
  {
  printf("%d ",a[i][j]);
   }
 printf("/n") ;
 }
 }
/*该方法代码长,时间复杂度大为2*n的2次方,占内存较大,是最容易的解法*/

 

 

main(){
 int a[9]={1,2,3,4,5,6,7,8,9};
 int N,k=0;
 int i=0,j;
 printf("输入N:");
 scanf("%d",&N);
 if(!(2<=N&&N<=9))
  {printf("erre");
   exit(0);
  }
 for(j=0;j<N;j++)
  {
   for(i=0;i<N;i++)
   {if(i+j<N)
     printf("%d ",a[i+j]);
    else
     printf("%d ",a[i+j-N]);
    }
   printf("/n") ;
  }

}
/*这是我想出的最简洁的办法,代码少,时间和空间复杂度都小,时间复杂度为n的平方,但是它不是真正的存储了数组,只是以数组的方式输出了数据。*/