nyoj-33-蛇形添数

来源:互联网 发布:网络牌清明上河图 编辑:程序博客网 时间:2024/04/29 03:25


蛇形填数

时间限制:3000 ms  |  内存限制:65535 KB
难度:3
描述
在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 16 9 25 4 3


#include <iostream>#include <iomanip>using namespace std;int main(){    int n,m;    int p;    cin>>n;   m=n;    p=n/2+1;    int **a;    a=new int*[n];    for(int i=0;i<n;i++)        a[i]=new int[n];    int kk=n*n;    int u=1;    int a1=0,a2=n-1;    for(int i=0;i<m;i++)        for(int j=0;j<m;j++)         a[i][j]=0;    for(int i=0;i<p;i++){                for(int k=0;k<n-1;k++){                    a[a1++][a2]=u++;                    //cout<<u-1<<" ";                        //a1++;                }                //a1++;                for(int k=0;k<n-1;k++){                    a[a1][a2--]=u++;                    //cout<<u-1<<" ";                        //a2--;                }                //a2--;               for(int k=0;k<n-1;k++){                    a[a1--][a2]=u++;                    //cout<<u-1<<" ";                        //a1--;                }                //a1--;                for(int k=0;k<n-1;k++){                    a[a1][a2++]=u++;                    //cout<<u-1<<" ";                        //a2++;                }                a1=a1+1;                a2=a2-1;                n-=2;    }    for(int i=0;i<m;i++)        for(int j=0;j<m;j++)         if(a[i][j]==0)            a[i][j]=u;    for(int i=0;i<m;i++){        for(int j=0;j<m;j++)         cout<<a[i][j]<<" ";    cout<<endl;}return 0;}










0 0
原创粉丝点击