回形矩阵

niuniu  •  1个月前

数组挑战-回形矩阵

制作人:钟佳宏

题目描述:

给你一个整数n,按要求输出n∗n的回型矩阵

输入 4

输出 1 2 3 4 12 13 14 5 11 16 15 6 10 9 8 7

代码:
#include <bits/stdc++.h>
using namespace std;
int s[30][30];
int main (){
	int n;
	scanf ("%d",&n);
	int c = 0,o = 0,u = n - 1;
	while (c < n * n){
		for (int i = o;i <= u;i++)
			s[o][i] = ++c;
		for (int i = o + 1;i <= u;i++)
			s[i][u] = ++c;
		for (int i = u - 1;i >= o;i--)
			s[u][i] = ++c;
		for (int i = u - 1;i >= o + 1;i--)
			s[i][o] = ++c;
		o++;
		u--;
	}
	for (int i = 0;i < n;i++){
		for (int j = 0;j < n;j++){
			printf ("%d ",s[i][j]);
		}
		printf ("\n");
	}
	return 0;
}

题目分析:

本题只需用while判断c等不等于n*n,再用四个for来输入右,下,左,上这个方向的数字,再输出就ok了

for (int i = o;i <= u;i++)//向右
			s[o][i] = ++c;
		for (int i = o + 1;i <= u;i++)//向下
			s[i][u] = ++c;
		for (int i = u - 1;i >= o;i--)//向左
			s[u][i] = ++c;
		for (int i = u - 1;i >= o + 1;i--)//向上
			s[i][o] = ++c;

暂未启用评论功能。