c++ - 以特殊顺序填充矩阵 C++
问题描述
我想用特殊顺序的值填充一个 8 x 8 矩阵(参见下面的示例),但我不知道该怎么做。每个数字代表订购号:例如:矩阵中的#3 是a 的第三个值,例如我要添加的测量值。订单应该是:
1 2 5 6 17 18 21 22
3 4 7 8 19 20 23 24
9 10 13 14 25 26 29 30
11 12 15 16 27 28 31 32
33 34 37 38 49 50 53 54
35 36 39 40 51 52 55 56
41 42 45 46 57 58 61 62
43 44 47 48 59 60 63 64
有人知道这样做的算法吗?我已经尝试过了,但这不是一个好方法,而且它不适用于整个矩阵
int b= 0, ii = 0, a = 0, iii = 0
i are different measurement values
and now a for loop
if (ii == 1)
{
b++;
}
if (ii == 2)
{
a++, b--;
}
if (ii == 3)
{
b ++;
}
tempMatrix[a][b] = i;
cout << "TempMatrix " << tempMatrix[a][b] << " a " << a << " b " << b << endl;
if (ii == 3)
{
ii = -1;
a --;
b ++;
}
if (iii == 7)
{
a = a + 2;
b = 0;
iii = -1;
}
解决方案
使用递归:
#include <iostream>
using namespace std;
void f(int a[8][8], int current, int x, int y, int size) {
if (size == 1) {
a[x][y] = current;
return;
} else {
size /= 2;
int add_for_each_square = size * size;
f(a, current, x, y, size);
f(a, current + add_for_each_square, x, y + size, size);
f(a, current + 2 * add_for_each_square, x + size, y, size);
f(a, current + 3 * add_for_each_square, x + size, y + size, size);
}
}
int main() {
int a[8][8];
f(a, 1, 0, 0, 8);
for (int i = 0; i < 8; ++i) {
for (int j = 0; j < 8; ++j) {
cout << a[i][j] << " ";
}
cout << endl;
}
}
推荐阅读
- python - 为什么此 api 请求仅在在线部署时才返回超时?
- facebook-graph-api - Facebook 移动应用程序如何签署对 Facebook 服务器的 API 调用以进行身份验证?
- ios - 快速执行队列
- python - 切换按钮以更改其类之外的某些东西的属性 - Kivy
- sql - 选择行序列
- nsis - NSIS 自定义页面 MessageBox 跳转到下一页
- scheme - 为什么是这样的 if 语句?
- python - 蟒蛇/美丽的汤。从中提取所有文本
- h2 和 h3 标签之间的标签
- javascript - 刷新并转到php上的上一页
- python - Pandas:计算数据框中所有行与特定行之间的差异