上三角
时间限制: 1 Sec 内存限制: 128 MB题目描述
方阵的主对角线之上称为“上三角”。
请你设计一个用于填充n阶方阵的上三角区域的程序。填充的规则是:使用1,2,3….的自然数列,从左上角开始,按照顺时针方向螺旋填充。
例如:当n=3时,输出:
1 2 3
6 4
5
当n=4时,输出:
1 2 3 4
9 10 5
8 6
7
输入
一个N
N(1<N<20)
输出
上三角元素,每个数后面都有一个空格
样例输入
4
样例输出
1 2 3 4
9 10 5
8 6
7
提示
#include <stdio.h> #include <stdlib.h> int main() { int n,a[100][100]={0},x=0,y=0,z=1; scanf("%d",&n); a[x][y]=1; while (z<n*(n+1)/2) { //往右 while(y+1<n&&!a[x][y+1]) { a[x][++y]=++z; } //斜向下 while(x+1<n&&y-1>=0&&!a[x+1][y-1]) { a[++x][--y]=++z; } //往上 while(x-1>=0&&!a[x-1][y]) { a[--x][y]=++z; } } //输出 for(x=0;x<n;x++) { for(y=0;y<n-x;y++) { printf("%d ",a[x][y]); } printf("\n"); } return 0; }