蛇形图

来源:互联网 发布:xp如何连接网络打印机 编辑:程序博客网 时间:2024/06/02 23:30

Problem Description

在n*n方陈里填入1,2,...,n*n,要求填成蛇形。例如n=4时方阵为:
1  2  6  7
3  5  8  13
4  9  12 14
10 11 15 16

Input

直接输入方阵的维数,即n的值。(n<=100)

Output

输出结果是蛇形方阵。

Sample Input

3

Sample Output

1 2 63 5 74 8 9

 

 

#include<cstdio>#include<iostream>using namespace std;int num[106][106];int n;int flag;void hehe(){for(int k=1;k<=n;k++){printf("%d",num[k][1]);for(int o=2;o<=n;o++)printf(" %d",num[k][o]);printf("\n");}}int main(){int i;while(cin>>n){int x=1,y=1;num[1][1]=1;for(i=2;i<=(n*n-n+2)/2+n-1;i++){if(x==1){y++;num[x][y]=i;i++;y--;x++;num[x][y]=i;flag=1;continue;}if(y==1){x++;num[x][y]=i;i++;y++;x--;num[x][y]=i;flag=0;continue;}if(flag==1){y--;x++;num[x][y]=i;}else{y++;x--;num[x][y]=i;}}for(i=i;i<=n*n;i++){if(x==n){y++;num[x][y]=i;i++;y++;x--;num[x][y]=i;flag=1;continue;}if(y==n){x++;num[x][y]=i;i++;y--;x++;num[x][y]=i;flag=0;continue;}if(flag==0){y--;x++;num[x][y]=i;}else{y++;x--;num[x][y]=i;}}hehe();}return 0;}


 

原创粉丝点击