拉丁方阵

http://codeup.cn/problem.php?id=22110

AC_Code

 1 #include <bits/stdc++.h>
 2 using namespace std;
 3 typedef long long ll;
 4 const int maxn=105;
 5 int n,a[maxn],b[maxn][maxn];
 6
 7 int main()
 8 {
 9     cin>>n;
10     for(int i=0;i<n;i++) cin>>a[i];
11     for(int i=0;i<n;i++){
12         int pos;
13         for(int j=0;j<n;j++){
14             if( a[j]==i+1 ){
15                 pos=j;
16                 break;
17             }
18         }
19         for(int j=0;j<n;j++){
20             b[j][a[(pos+j)%n]-1]=a[i];
21         }
22     }
23
24     for(int i=0;i<n;i++){
25         for(int j=0;j<n-1;j++){
26             cout<<b[i][j]<<" ";
27         }
28         cout<<b[i][n-1]<<endl;
29     }
30     return 0;
31 }

原文地址:https://www.cnblogs.com/wsy107316/p/12294196.html

时间: 2024-10-13 05:20:12

拉丁方阵的相关文章

拉丁方阵问题

问题描述: 拉丁方阵是一种n×n的方阵,方阵中恰有n中不同的元素,每种元素恰有n个,并且每种元素在一行和一列中恰好出现一次.著名数学家和物理学家欧拉使用拉丁字母来做为方阵里元素的符号,拉丁方阵因此而得名. 问题分析: 用循环链表来实现 实现代码(c): #include<stdio.h> #include<stdlib.h> typedef struct Node { int data; struct Node *next; }Node; typedef struct Node *

魔术师发牌和拉丁方阵

本文利用经典的魔术师发牌问题与拉丁法阵分别解说了循环链表与单向链表的使用,作为算法中的经典,对于链表的学习和理解都有着非常大的帮助,最好还是一看. 魔术师发牌问题 问题描写叙述: 魔术师利用一副牌中的13张黑牌,预先将他们排好后叠放在一起,牌面朝下.对观众说:"我不看牌,仅仅数数就能够猜到每张牌是什么,我大声数数,你们听,不信?现场演示."魔术师将最上面的那张牌数为1,把他翻过来正好是黑桃A,将黑桃A放在桌子上,第二次数1,2,将第一张牌放在这些牌的以下,将第二张牌翻过来,正好是黑桃2

魔术师发牌问题和拉丁方阵问题

魔术师发牌问题 问题描述: 魔术师利用一副牌中的13张黑牌,预先将他们排好后叠放在一起,牌面朝下.对观众说:“我不看牌,只数数就可以猜到每张牌是什么,我大声数数,你们听,不信?现场演示.”魔术师将最上面的那张牌数为1,把他翻过来正好是黑桃A,将黑桃A放在桌子上,第二次数1,2,将第一张牌放在这些牌的下面,将第二张牌翻过来,正好是黑桃2,也将它放在桌子上这样依次进行将13张牌全部翻出,准确无误. 问题:牌的开始顺序是如何安排的? 思路就是用一个循环链表来解决问题, 初始化一个长度为13的循环链表,

小猪的数据结构辅助教程——2.6 经典例子:魔术师发牌问题和拉丁方阵问题

小猪的数据结构辅助教程--2.6 经典例子:魔术师发牌问题和拉丁方阵问题 标签(空格分隔): 数据结构 本节引言: 本节继续带来的是循环链表的两个经典例子,分别是魔术师发牌问题和拉丁方阵问题! 1.魔术师发牌问题 问题描述: 魔术师利用一副牌中的13张黑桃牌,预先将他们排好后叠放在一起,牌面朝下.对观众说:"我不看牌,只数数就可以猜到每张牌是什么,我大声数数,你们听,不信?现场演示."魔术师将牌堆最上面的哪张排数为1,把他翻过来正好是黑桃A,将黑桃A从牌堆抽出放在桌子上,第二次数1.2

拉丁方阵的一些思考

问题: 拉丁方阵(英语:Latin square)是一种 \(n × n\) 的方阵,在这种 $n × n \(的方阵里,恰有\) n $种不同的元素,每一种不同的元素在同一行或同一列里只出现一次. \[ \begin{bmatrix} 1&2&3 \\\ 2&3&1 \\\ 3&1&2 \end{bmatrix} \begin{bmatrix}a&b&d&c \\\ b&c&a&d \\\ c&d&a

拉丁方阵问题 -- python实现

问题描述 拉丁方阵是一种n×n的方阵,方阵中恰有n种不同的元素,每种元素恰有n个,而且每种元素在一行和一列中 恰好出现一次.著名数学家和物理学家欧拉使用拉丁字母来作为拉丁方阵里元素的符号,拉丁方阵因此而得名. 比如: 1 2 3 2 3 1 3 1 2 问题:怎样构造N阶拉丁方阵? 列表 def solution_list(n): for y in range(n): for x in range(n): num = (y + x) % n + 1 print(f'{num} ', end=''

算法:拉丁方阵(Latin Square)

拉丁方阵(英语:Latin square)是一种 n × n 的方阵,在这种 n × n 的方阵里,恰有 n 种不同的元素,每一种不同的元素在同一行或同一列里只出现一次.以下是两个拉丁方阵举例: 拉丁方阵有此名称是因为瑞士数学家和物理学家欧拉使用拉丁字母来做为拉丁方阵里的元素的符号. 算法步骤: 在第一行中,数字从 1 到 n 连续存储. 第二行,数字向右移动一列.即 1 现在存储在第二列,依此类推. 在第三行中,数字向右移动两列.即 1 现在存储在第三列,依此类推. 对于其余的行,我们将以相同

拉丁矩阵

#include <stdio.h> #define N 6                                             /*确定N值*/ int main1() { int i, j, k, t; printf( "The possble Latin Squares of order %d are:\n", N ); for ( j = 0; j < N; j++ )                       /*构造N个不同的拉丁方阵

[转]100个经典C语言程序(益智类问题)

目录: 1.绘制余弦曲线 2.绘制余弦曲线和直线 3.绘制圆 4.歌星大奖赛 5.求最大数 6.高次方数的尾数 8.借书方案知多少 9.杨辉三角形 10.数制转换 11.打鱼还是晒网 12.抓交通肇事犯 13.该存多少钱 14.怎样存钱利最大 15.捕鱼和分鱼 16.出售金鱼 1.7 分数四则运算 17.平分七筐鱼 18.有限5位数 19. 8 除不尽的数 21.4位反序数 22.求车速 23.阿姆斯特朗数 24.完全数 26.亲密数 27.自守数 28.回文数 29.求具有abcd=(ab+c