我认为这个问题有一个简单的解决方案,几个 for 循环和一些奇特的计数器,但显然它相当复杂。
所以我的问题是,你将如何(用 C 语言)编写对角条中方阵的函数遍历。
Example:
1 2 3
4 5 6
7 8 9
必须按以下顺序遍历:
[1],[2,4],[3,5,7],[6,8],[9]
上面的每个条带都用方括号括起来。
要求之一是能够区分条带。这意味着您知道何时开始新的连环画。这是因为我必须为条带中的每个项目以及新条带开始之前调用另一个函数。因此,没有代码重复的解决方案是理想的。
这是你可以使用的东西。只需将 printfs 替换为您实际想要执行的操作即可。
#include <stdio.h>
int main()
{
int x[3][3] = {1, 2, 3,
4, 5, 6,
7, 8, 9};
int n = 3;
for (int slice = 0; slice < 2 * n - 1; ++slice) {
printf("Slice %d: ", slice);
int z = (slice < n) ? 0 : slice - n + 1;
for (int j = z; j <= slice - z; ++j) {
printf("%d ", x[j][slice - j]);
}
printf("\n");
}
return 0;
}
Output:
Slice 0: 1
Slice 1: 2 4
Slice 2: 3 5 7
Slice 3: 6 8
Slice 4: 9
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)