在 C++ 中的拉丁方阵
拉丁方阵是一个具有特殊模式的矩阵。我们来看几个不同的例子来检验一下这个模式。
1 2 2 1 1 2 3 3 1 2 2 3 1 1 2 3 4 4 1 2 3 3 4 1 2 2 3 4 1
你从上面几个例子中会发现,得到的拉丁方阵具有不同的尺寸。但是,如果你仔细观察这些矩阵的模式,你会发现前一行的最后一个数字会成为下一行中的第一个元素。
这就是拉丁方阵隐藏的模式。我们必须编写一个程序,根据输入n生成上述矩阵。
算法
- 使用任何你喜欢的数字初始化n。
- 使用值n + 1 初始化一个数字,称之为first_half_end。
- 编写一个循环,从1到n(包括两者)进行迭代。
- 将first_half_end的值赋给一个名为first_half_start的变量。
- 编写一个循环,直到first_half_start的值达到n。
- 打印迭代变量,即first_half_start。
- 编写一个循环,从1到first_half_end进行迭代。
- 打印迭代变量。
- 将first_half_end的值减1。
- 移到下一行。
实现
以下是该算法在 C++ 中的实现
#include <bits/stdc++.h>
using namespace std;
void generateLatinSquare(int n) {
int first_half_end = n + 1;
for (int i = 1; i <= n; i++) {
int first_half_start = first_half_end;
while (first_half_start <= n) {
cout << first_half_start << " ";
first_half_start++;
}
for (int second_half_start = 1; second_half_start < first_half_end; second_half_start++){
cout << second_half_start << " ";
}
first_half_end--;
cout << endl;
}
cout << endl;
}
int main(void) {
generateLatinSquare(2);
generateLatinSquare(3);
generateLatinSquare(4);
return 0;
}输出
如果你运行上面的代码,你将得到以下结果。
1 2 2 1 1 2 3 3 1 2 2 3 1 1 2 3 4 4 1 2 3 3 4 1 2 2 3 4 1
广告
数据结构
网络
RDBMS
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP