蛇形填数的递归实现

来源:互联网 发布:程序员平均年龄 编辑:程序博客网 时间:2024/05/22 01:54
分治的思想真有些神奇。。。
<span style="font-family:Courier New;font-size:18px;">#include <iostream>using namespace std;const int maxn=20;int a[maxn][maxn];void draw(int x,int y,int start,int size){    if(size<=0) return;    int t1=x,t2=y;    for(int i=x;i<t1+size-1;i++){        a[i][y]=start;        start++;    }    x=t1+size-1;    for(int j=y;j<t2+size-1;j++) {        a[x][j]=start;        start++;    }    y=t2+size-1;    for(int i=x;i>t1;i--) {        a[i][y]=start;        start++;    }    x=t1;    for(int j=y;j>t2;j--) {        a[x][j]=start;        start++;    }    x=t1+1;    y=t2+1;    draw(x,y,start,size-2);}int main(){    int n;    cin>>n;    draw(0,0,1,n);    for(int i=0;i<n;i++) {        for(int j=0;j<n;j++) {            cout<<a[i][j]<<" ";        }        cout<<endl;    }    return 0;}</span>

0 0
原创粉丝点击