编程算法

旋转矩阵 代码(C)


本文地址: http://blog.csdn.net/caroline_wendy


输出旋转矩阵, 使矩阵是按对角线螺旋上升, 在输出规则确定以后, 就能够推断, 上升规律是, 行列相加为定值.

所以採用两次循环的方法, 而且上下矩阵, 分开输出.

如:

  1   2   6   7  15
  3   5   8  14  16
  4   9  13  17  22
 10  12  18  21  23
 11  19  20  24  25

代码:

/*
 * main.cpp
 *
 *  Created on: 2014.6.12
 *      Author: Spike
 */

/*eclipse cdt, gcc 4.8.1*/

#include <stdio.h>

void output(int n)
{
	if (n < 0) return;

	const int MAX = 100;
	int a[MAX][MAX];

	int min = 1;
	int max = n*n;

	//上半个矩阵
	for (int i=0; i<n; i++) {
		for (int j=0; j<i+1; j++)
			if (i % 2 == 0) {
				a[i-j][j] = min++;
				a[n-1-i+j][n-1-j] = max--;
			} else {
				a[j][i-j] = min++;
				a[n-1-j][n-1-i+j] = max--;
			}
	}

	for (int i=0; i<n; i++) {
		for (int j=0; j<n; j++)
			printf("%3d%c", a[i][j], j == n - 1 ? '
' : ' ');
	}

}

int main()
{
	output(5);
	return 0;
}


输出:

  1   2   6   7  15
  3   5   8  14  16
  4   9  13  17  22
 10  12  18  21  23
 11  19  20  24  25




版权声明:本文博客原创文章,博客,未经同意,不得转载。

原文地址:https://www.cnblogs.com/gcczhongduan/p/4751069.html