zoukankan      html  css  js  c++  java
  • 拉丁方阵【转】

    http://www.kuqin.com/tiku/20080424/7581.html

    构造 NXN 阶的拉丁方阵(2<=N<=9),使方阵中的每一行和每一列中数字1到N只出现一次。如N=4时:
    1 2 3 4
    2 3 4 1
    3 4 1 2
    4 1 2 3

    *问题分析与算法设计
    构造拉丁方阵的方法很多,这里给出最简单的一种方法。观察给出的例子,可以发现:若将每 一行中第一列的数字和最后一列的数字连起来构成一个环,则该环正好是由1到N顺序构成;对于第i行,这个环的开始数字为i。按照 此规律可以很容易的写出程序。下面给出构造6阶拉丁方阵的程序。

    *程序说明与注释
    #include<stdio.h>
    #define N 6 /*确定N值*/
    int main()
    {
    int i,j,k,t;
    printf("The possble Latin Squares of order %d are: ",N);
    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(" ");
    }
    printf(" ");
    }
    }

    *运行结果
    The possble Latin Squares of order 6 are:
    1 2 3 4 5 6 2 3 4 5 6 1 3 4 5 6 1 2
    2 3 4 5 6 1 3 4 5 6 1 2 4 5 6 1 2 3
    3 4 5 6 1 2 4 5 6 1 2 3 5 6 1 2 3 4
    4 5 6 1 2 3 5 6 1 2 3 4 6 1 2 3 4 5
    5 6 1 2 3 4 6 1 2 3 4 5 1 2 3 4 5 6
    6 1 2 3 4 5 1 2 3 4 5 6 2 3 4 5 6 1

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

  • 相关阅读:
    学习笔记CSS
    悲剧,当用cywin 写Linux脚本
    .net中控件的命名规则和一些词语的简称(转)(I)
    PyMining开源中文文本数据挖掘平台 Ver 0.2发布
    TCP和UDP的区别(转)
    发一道我今天遇到C面试题(求完美解)
    C#三种定时器的实现转载
    window 拷贝 linux 远程
    datepicker 日月年
    Oracle PL/SQL练习题总目录 hl3292
  • 原文地址:https://www.cnblogs.com/huashanqingzhu/p/3843251.html
Copyright © 2011-2022 走看看