螺旋矩阵基本算法

我也是从别人那里学来的,废话不多说直接上代码。

唔,还是多说两句吧2333

这是螺旋矩阵的基本算法,在此基础上可以自行扩展

基本思想是
1.先定义输出数组;
2.赋值;
– 上侧从左到右赋值到底;
– 右侧从上到下赋值到倒数第二个;
– 下侧从右到左赋值到倒数第二个;
– 左侧从下到上赋值到倒数第二个;
– 以此类推;
注:此处还有其它方式,例如左右两侧均到倒数第二个,上下两侧从头到尾。
3.若为奇方阵则还需对中心元素赋值。

[cc lang = “cpp” escaped = “true”]
#include

using namespace std;

int main(void) {
int base = 1;
int a[100[100] = {0};
int n, i, j, k;
cin >> n;
for (k = 0; k < n/2; k++) {
for (i = k; i < n-k; i++)
a[k][i] = base++;
for (j = k+1; j < n-k-1; j++)
a[j][n-k-1] = base++;
for (i = n-k-1; i > k; i–)
a[n-k-1][i] = base++;
for (j = n-k-1; j > k; j–)
a[j][k] = base++;
}
if (n % 2) a[n/2][n/2] = base;
for (i = 0; i < n; i++) {
for (j = 0; j < n; j++)
printf(“%4d”,a[i][j]);
printf(“\n”);
}
return 0;
}

//参考了:http://blog.csdn.net/xuchao1229/article/details/8117312
//比心~
[/cc]



Leave a Reply

Your email address will not be published. Required fields are marked *