蛇形填数
来源:互联网 发布:卖家网数据套餐 编辑:程序博客网 时间:2024/06/07 01:30
#include<stdio.h>#include<stdlib.h>#include<memory.h>int main(){ int n,i,j; scanf("%d",&n); int p[20][20]; memset(p,0,sizeof(p)); // int **p=(int *)malloc(sizeof(int)*n); /* for(i=0;i<n;i++) { p[i]=(int *)malloc(sizeof(int)*n); } for(i=0;i<n;i++) { for(j=0;j<n;j++) { p[i][j]=0; } }*/ int t=1,x=0,y=0; p[0][0]=1; while(t<n*n) { while(y+1<n&&!p[x][y+1])p[x][++y]=++t;//x=0;y=4 while(x+1<n&&!p[x+1][y])p[++x][y]=++t;//x=4//y=4 while(y-1>=0&&!p[x][y-1])p[x][--y]=++t;//x=4,y=0; while(x-1>0&&!p[x-1][y])p[--x][y]=++t; } // int m=1; for(i=0;i<n;i++) { for(j=0;j<n;j++) { printf("%5d ",p[i][j]); if(j==n-1) { printf("\n"); } } } return 0;}
首先得定义足够大的数组——控制输出即可(n来控制输出的数组大小)
把大数组全部赋值为零——作为判断依据2!p【x】【y】
然后控制边界(0<x<n,以0<y<n,)
while内之所以是y+1<n而不是y<n是因为控制循环结束后y的值正好为n-1(即为输出的边界值)方便下一次的判断
注意好两个while中的判断,无论蛇的头在哪,都可以用这四个循环jiejue,只不过变一下顺序~~~~
阅读全文
0 0
- 蛇形填数
- 算法:蛇形填数
- 蛇形填数
- 蛇形填数
- 蛇形填数
- 蛇形填数问题
- 蛇形填数
- C++蛇形填数
- 蛇形填数
- 蛇形填 数
- 蛇形填数
- NYOJ - 蛇形填数
- 蛇形填数
- 各种蛇形填数
- 蛇形填数
- 蛇形填数
- ACM-蛇形填数
- 蛇形填数
- 最常见的34个敏捷测试面试的Q&A(上)
- 在C#中使用WIA获取扫描仪数据
- 入阵曲 洛谷p3941
- TensorFlow学习笔记(五)
- MongoDB基本(CRUD)
- 蛇形填数
- Java if,for语句里面的返回值
- springmvc .html请求返回解决406问题
- git命令合并分支代码
- hbase自动化部署脚本
- 为什么使用PreparedStatement而不是Statement
- Docker搭建私有镜像仓库
- 枚举—案例(画家问题poj1681)
- 最常见的34个敏捷测试面试的Q&A(下)