蛇形填数 递归
蛇形填數
描述輸入
樣例輸出
1 ? 8 ?7
2 ?9 ?6
3 ?4 ?5
#include<iostream> using namespace std; #define N 100 int 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
?
總結
- 上一篇: sqlserver 修改表字段长度
- 下一篇: 冲压模板自动标注LISP_自动标注.LS