博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
蛇形填数
阅读量:6149 次
发布时间:2019-06-21

本文共 1321 字,大约阅读时间需要 4 分钟。


蛇形填数:
描写叙述 在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 1

6 9 2

5 4 3

上代码:

#include
int N[100][100];//定义全局二维数组,存储数据int count = 1;//count 记录每次填进数组的数字//填数函数,參数分别为:数组的行号,列号,開始填入的数字(从1開始),数组的大小void sxts(int k,int h,int count,int size){ if(size == 0)//数组大小为 0 * 0 ,即没有要填的,直接返回 return ; if(size == 1)//数组为数组大小为1 * 1,仅仅需填入一个数 { N[h][k] = count; return ; } int i = 0; N[h][k] = count;//填右上角的位置 1; count ++;//数字加1为下一次填数准备 //填最外层的右边一竖列(相当于size = 3 时 的 2 3) //此列规律为:列号不变,行号依次添加 for(i = 0; i < size - 1; i ++) { h ++;//行号添加 N[h][k] = count;//填入数字 count ++;//为下一次填数准备 } //填最外一层的下边(相当于size = 3 时 的 4 5) //此行的规律为:行号不变,列号依次递减 for(i = 0; i < size -1; i ++) { k --; N[h][k] = count; count ++; } //填最外一层的左边一竖列(相当于size = 3 时 的 6 7) //此行的规律为:列号不变。行号号依次递减 for(i = 0; i < size - 1; i ++) { h --; N[h][k] = count; count ++; } //填最外一层的上边一行(相当于size = 3 时 的 8) //此行的规律为:列号不变,行号号依次递减,可是注意在填这一行时循环应该为size - 2次,由于此行的最左边和最右边的均被填过 for(i = 0; i < size - 2; i ++) { k ++; N[h][k] = count; count ++; } //递归调用,填下一层 sxts(k,h + 1,count,size - 2);}int main(){ int h,k,n,i,j; scanf("%d",&n); k = n - 1; h = 0; sxts(k,h,count,n); //打印出数组 for(i = 0; i < n; i ++) { for(j = 0; j < n; j ++) printf("%d ",N[i][j]); printf("\n"); } return 0;}

转载地址:http://izwfa.baihongyu.com/

你可能感兴趣的文章
android背景选择器selector用法汇总
查看>>
[转]Paul Adams:为社交设计
查看>>
showdialog弹出窗口刷新问题
查看>>
java
查看>>
Vue.js连接后台数据jsp页面  ̄▽ ̄
查看>>
关于程序的单元测试
查看>>
mysql内存优化
查看>>
都市求生日记第一篇
查看>>
Java集合---HashMap源码剖析
查看>>
SQL优化技巧
查看>>
thead 固定,tbody 超出滚动(附带改变滚动条样式)
查看>>
Dijkstra算法
查看>>
css 动画 和 响应式布局和兼容性
查看>>
csrf 跨站请求伪造相关以及django的中间件
查看>>
MySQL数据类型--与MySQL零距离接触2-11MySQL自动编号
查看>>
生日小助手源码运行的步骤
查看>>
Configuration python CGI in XAMPP in win-7
查看>>
bzoj 5006(洛谷 4547) [THUWC2017]Bipartite 随机二分图——期望DP
查看>>
CF 888E Maximum Subsequence——折半搜索
查看>>
欧几里德算法(辗转相除法)
查看>>