蛇形
来源:互联网 发布:gv直播软件 编辑:程序博客网 时间:2024/06/11 09:44
Give you many positive integer N (N<=23), for each N, just output N*(N+1)/2 integers in a single line, separated by space. (Don't ask me why.) For each N, the output line contains integers from 1 to N, and each just once. Again, do not ask me why, thank you. I'm so busy. But I can tell you a secret, the output has relationship with number triangle. As:(N=3)
1
2 6
3 4 5
See the sample for more information.
输入
a positive integer N (N<=23).
输出
For each N, output N*(N+1)/2 integers in a single line, separated by a blank space.
样例输入
3 4 2 6
样例输出
1 2 6 3 4 5 1 2 9 3 10 8 4 5 6 7 1 2 3 1 2 15 3 16 14 4 17 21 13 5 18 19 20 12 6 7 8 9 10 11
#include <stdio.h>int main(){int n,y,x;while (scanf("%d", &n) != EOF) {int a[23][23]={0},m=1;for(y=n;y>=1;y--){a[1][y]=m++; } for(x=2;x<=n;x++) {a[x][1]=m++; } x=x-1; y=y+1; while(m<=(n*(n+1)/2)){for(;x>=1 && y<=n;){if(a[--x][++y]==0){ a[x][y]=m++;}else{break;}}if (m > n*(n+1)/2) break; //下面的步骤是因为虽然break,x和y还是多加了一次,要注意。x = ++x;y=y-1; //for(;y>=1;){ //for里面第一个数可以没有,不用其他的数字表示了。if(a[x][--y]==0){a[x][y]=m;m++; } else{break;}}if (m > n*(n+1)/2) break;y=y+1;for(;x<=n;){if(a[++x][y]==0){a[x][y]=m++;}else{break;}}if (m > n*(n+1)/2) break; x=x-1; } for(y=n;y>=1;y--){for(x=1;x<=n-y+1;x++){if (y == 1 && x == n)printf("%d\n",a[x][y]);elseprintf("%d ",a[x][y]);} }}return 0;}
0 0
- 蛇形
- 蛇形方阵
- 蛇形文字
- 蛇形数组
- 蛇形矩阵
- 蛇形数组
- 蛇形矩阵
- 蛇形数组
- 蛇形矩阵
- 蛇形矩阵
- 蛇形矩阵
- 蛇形矩阵
- 蛇形数组
- 蛇形矩阵
- 蛇形图
- 蛇形矩阵
- 蛇形矩阵
- 蛇形矩阵
- Android音乐播放器
- 银灿IS916也可以量产三驱三启动成功教程
- hiho1234--Fractal(高精度比较问题)
- 如何给Neutron API增加资源
- 最省油费
- 蛇形
- [burnside引理] HDU5868 Different Circle Permutation
- 2756: [SCOI2012]奇怪的游戏
- Gson解析和Volley框架并用
- 谱聚类
- postgresql for mac简单操作
- mvc 关于何时使用 辅助器、分部视图、子动作说明
- Android 安全类知识导读
- Linux中的使用和虚拟机(部分)