前言

拉丁方阵介绍

拉丁方阵是一种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

后记

每日一言

失之东隅,收之桑榆---------------三国杀陆神将