前言
拉丁方阵介绍
拉丁方阵是一种n×n的方阵,方阵中恰有n种不同的元素,每种元素恰有n个,
并且每种元素在一行和一列中恰好出现一次。著名数学家和物理学家欧拉使用拉
丁字母来作为拉丁方阵里元素的符号,拉丁方阵因此而得名。
例子如下图所示
拉丁方阵的做法有很多,可以用循环列表来实现,这里我使用直接用for循环来生成一个拉丁方阵标准型的。
实现代码
/**
* 生成拉丁方阵
*/
import java.util.*;
/**
* @author 逝不等琴生
*
*/
public class test3_5 {
/**
* @param args
*/
public static void print(int n) {
for (int i = 0; i < n; i++) {
if (i == 0) {
for (int j = 65; j < n + 65; j++)
System.out.printf("%c", j);
System.out.println();
} else {
for (int k = 65 + i; k < 65 + n; k++)
System.out.printf("%c", k);
for (int k = 65; k < 65 + i; k++)
System.out.printf("%c", k);
System.out.println();
}
}
}
public static void main(String[] args) {
// TODO 自动生成的方法存根
System.out.println("请输入n的值:");
Scanner in = new Scanner(System.in);
int n = in.nextInt();
print(n);
}
}
程序运行效果
当然,如果你是用数字来填充拉丁方阵的话就更简单了
直接两个for循环解决
for(j=0;j<N;j++) /*构造N个不同的拉丁方阵*/
{
for(i=0;i<N;i++)
{
t=(i+j)%N; /*确定该拉丁方阵第i 行的第一个元素的值*/
for(k=0;k<N;k++)
{
printf("%d",(k+t)%N+1);
}
printf("\n");
}
printf("\n");
}
用链表实现的话推荐这篇博客:https://blog.csdn.net/u012997311/article/details/51679479
后记
每日一言
失之东隅,收之桑榆---------------三国杀陆神将