蛇形填数 递归
来源:互联网 发布:2017网络最新最火的词 编辑:程序博客网 时间:2024/05/16 17:24
蛇形填数
- 描述
- 在n*n方陈里填入1,2,...,n*n,要求填成蛇形。例如n=4时方陈为:
- 输入
- 直接输入方陈的维数,即n的值。(n<=100)
- 输出
- 输出结果是蛇形方陈。
- 样例输入
3
样例输出
1 8 7
2 9 6
3 4 5
#include<iostream>using namespace std;#define N 100int P[N][N];void Fill(int number,int begin,int size){if(size==0)return ;if(size==1){P[begin][begin]=number;return;}int i=0;int h=begin,v=begin;P[h][v]=number;number++;for(i=0;i<size-1;i++){h++;P[h][v]=number;number++;}for(i=0;i<size-1;i++){v++;P[h][v]=number;number++;}for(i=0;i<size-1;i++){h--;P[h][v]=number;number++;}for(i=0;i<size-2;i++){v--;P[h][v]=number;number++;}Fill(number,v,size-2);}int main(){int h,v,n;scanf("%d",&n);Fill(1,0,n);for(h=0;h<n;h++){for(v=0;v<n;v++){printf("%d ",P[h][v]);}printf("\n");}return 0;}
思想:1、从上到下
for(i=0;i<size-1;i++)
{
h++;
P[h][v]=number;
number++;
}2、从左到右
for(i=0;i<size-1;i++)
{
v++;
P[h][v]=number;
number++;
}3、自下而上
for(i=0;i<size-1;i++)
{
h--;
P[h][v]=number;
number++;
}4、自右向左
for(i=0;i<size-2;i++)
{
v--;
P[h][v]=number;
number++;
}临界条件:size==0和size==1
0 0
- 蛇形填数 递归
- 简单递归之蛇形填数
- 蛇形填数的递归实现
- 蛇形填数问题—递归+迭代
- 用递归解决蛇形填数的问题
- 蛇形填数
- 算法:蛇形填数
- 蛇形填数
- 蛇形填数
- 蛇形填数
- 蛇形填数问题
- 蛇形填数
- C++蛇形填数
- 蛇形填数
- 蛇形填 数
- 蛇形填数
- NYOJ - 蛇形填数
- 蛇形填数
- [c++]c++程序设计-Y.Daniel.Liang 笔记
- 装饰模式
- Selenium初体验(基于Java)
- for循环的三个表达式
- java设计模式之代理模式 (静态&动态)
- 蛇形填数 递归
- Android网络开发之HttpURLConnection
- 生活感触——锻炼中的坚持
- Fragment
- 【图】BFS和DFS
- C#中两个窗口怎么传递参数?或者怎么使用另一个窗口的控件呢?
- 51nod 1387 移数字(多项式除法)
- 第三周 项目1:个人所得税计算器
- soledede--泰勒级数