蛇形填数

来源:互联网 发布:少儿单片机培训机构 编辑:程序博客网 时间:2024/05/18 21:08

描述
在n*n方陈里填入1,2,...,n*n,要求填成蛇形。例如n=4时方陈为:
10 11 12 1
9 16 13 2
8 15 14 3
7 6 5 4
输入
直接输入方陈的维数,即n的值。(n<=100)
输出
输出结果是蛇形方陈。
样例输入
3
样例输出
7 8 16 9 25 4 3
解题思路:
  该蛇形方阵的特点是起始位置在右上角第一个,起始数值为一,其最外层数字的排列顺序如下:
此题是通过嵌套循环分别控制行和列,然后进行输出。本题的难点在于输出数字的变化规律,首先看最外层,用二维数组表示数字表示的位置,则数字从a[0][n]开始计为一,向下每加一行,数值加一,到底n行时,再将每列减一,数值仍然加一,然后到第一列,每行减一,数值加一,再到第一行,每列加一,数值加一。
  然后再用递归的思想逐步向内进行排序,其递归边界条件有两种可能,如图所示:
所以其终止条件为n=1或n=0。
本题的程序代码如下所示:
#include<stdio.h>int p[100][100];void fill(int number,int i,int j,int n);int main(){int i,j,n;scanf("%d",&n);fill(1,0,n-1,n);for(i=0;i<n;i++){for(j=0;j<n;j++){printf("%d ",p[i][j]);}printf("\n");}return 0;}void fill(int number,int i,int j,int n){if(n==0)return;if(n==1){p[i][j]=number;return;}int t;p[i][j]=number;number++;for(t=0;t<n-1;t++){i++;p[i][j]=number;number++;}for(t=0;t<n-1;t++){j--;p[i][j]=number;number++;}for(t=0;t<n-1;t++){i--;p[i][j]=number;number++;}for(t=0;t<n-2;t++){j++;p[i][j]=number;number++;}fill(number,i+1,j,n-2);}

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 电脑配置低玩lol卡怎么办 电视打开显示无信号怎么办 电脑卡怎么办换个驱动 刚开始开淘宝店没人买怎么办 公司有人带自己电脑办公怎么办 组装电脑连不上网怎么办 显卡玩不起吃鸡怎么办 u盘内存是假的怎么办 新买的电脑应该怎么办 海尔一体机电脑开不开机怎么办 苹果笔记本系统坏了怎么办 苹果笔记本电脑电池坏了怎么办 苹果笔记本电脑屏幕坏了怎么办 平板开关键坏了怎么办 平板电脑电池坏了怎么办 平板电脑充电口坏了怎么办 平板电脑系统坏了怎么办 平板电脑充电器坏了怎么办 平板电脑触摸屏坏了怎么办 平板电脑关不了机怎么办 平板电脑触摸屏没反应怎么办 平板电脑声音太小怎么办 平板电脑频碎了怎么办? 淘宝直播展示频道排后怎么办 网店头像改不了怎么办 被骗了7500追不回来怎么办 steam中国版原来的游戏怎么办 老公买驾照被骗妻子应该怎么办 被淘密码骗了怎么办 逛街手机没电了怎么办 电脑登入密码忘了怎么办 晚上睡不好觉经常做梦怎么办 开淘宝店开始零销量怎么办 淘宝店开直通车后销量怎么办 淘宝直播一开始直播没人该怎么办 淘宝店铺访客数据下滑怎么办 2个ctrl键都失灵怎么办 淘宝上搜索不到很久以前订单怎么办 关键词找不到了是不是被降权怎么办 购买小程序关键词想退款怎么办? 浏览器审查元素不拆分关键词怎么办