首页 > 代码库 > 蛇形填数
蛇形填数
题如果不知道的话可以去杭电的oj搜一下
先分析题:数字的顺序是下下下右右右上上上左左左,这样程序就能好写多了 我就写一个往下写的语句吧 while(x + 1 < n&&!a[x + 1][y])a[++x][y] = ++tot;
当x + 1 < n且下一个数字不为0的时候就继续写
下面看代码:
#include<stdio.h>#include<string.h>#define MAXN 10int a[MAXN][MAXN];int main(){ int n,x,y,tot = 0; scanf("%d",&n); memset(a,0,sizeof(a)); tot = a[x = 0][y = n - 1] = 1; while(tot < n*n) { while(x + 1 < n&&!a[x + 1][y])a[++x][y] = ++tot; while(y - 1 >= 0&& !a[x][y-1])a[x][--y] = ++tot; while(x - 1 >= 0&& !a[x-1][y])a[--x][y] = ++tot; while(y+1 < n&&!a[x][y+1])a[x][++y] = ++tot; } for(x = 0; x < n;x++) { for(y = 0;y < n;y++)printf("%3d",a[x][y]); printf("\n"); } return 0;}
蛇形填数
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。