蛇形填数
- 描述
- 在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 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