九州算术数学论坛's Archiver

rthy 发表于 2007-5-5 08:57

入门每日一题_20070505

[color=DarkRed]从今天开始每天帖一题  欢迎大家讨论哦[/color]
[color=DarkRed]我想对喜欢程序设计的朋友应该很有好处把[/color]



在N行N列的数阵中, 数K(1〈=K〈=N)在每行和每列中出现且仅
  出现一次,这样的数阵叫N阶拉丁方阵。例如下图就是一个五阶拉丁方阵。
  编一程序,从键盘输入N值后,打印出所有不同的N阶拉丁方阵,并统计个数。

        1  2  3  4  5
        2  3  4  5  1
        3  4  5  1  2
        4  5  1  2  3
        5  1  2  3  4

流泪的鹰 发表于 2007-5-6 11:41

我做的,想了好半天

#include<stdio.h>
#define N 10
int main()
{
int a[N]= {0};
int n,m = 0;
int i,j;
printf("please input number low %d:\n",N+1);
scanf("%d",&n);
for(i=0; i<(n+1); i++)
{
   a[i] = i+1;
}
for(i=0; i<n; i++)
{
    m = m%n + i;
    for(j=0; j<n; j++)
    {
       m++;
      printf(a[m%n]);
     }
     printf("\n");
}


  getch();
  return 0;
}

流泪的鹰 发表于 2007-5-6 11:46

哦 我晕 版主把前面的那个删掉吧,我发错了

那个是我没有做出来的
呵呵
这个才是
#include<stdio.h>
#define N 10
int main()
{
int a[N];
int n;
int i,j;
printf("please input number low %d:\n",N+1);
scanf("%d",&n);
for(i=0; i<(n+1); i++)
{
   a[i] = i+1;
}
for(i=0; i<n; i++)
{
    for(j=i;j<(n+i); j++)
    {
       printf("%4d",a[j%n]);
     }
     printf("\n");
  }

return 0;
}

页: [1]

Powered by Discuz! Archiver 7.0.0  © 2001-2007 Comsenz Inc.