码迷,mamicode.com
首页 > 其他好文 > 详细

1.8.24(待优化)

时间:2016-12-06 03:36:52      阅读:166      评论:0      收藏:0      [点我收藏+]

标签:names   大于   --   font   设置   ret   顺序   填充   依次   

24:蛇形填充数组

总时间限制:
1000ms
内存限制:
65536kB
描述

用数字1,2,3,4,...,n*n这n2个数蛇形填充规模为n*n的方阵。

蛇形填充方法为:

对于每一条左下-右上的斜线,从左上到右下依次编号1,2,...,2n-1;按编号从小到大的顺序,将数字从小到大填入各条斜线,其中编号为奇数的从左下向右上填写,编号为偶数的从右上到左下填写。

比如n=4时,方阵填充为如下形式:

1  2  6  7
3  5  8  13
4  9  12 14
10 11 15 16
输入
输入一个不大于10的正整数n,表示方阵的行数。
输出
输出该方阵,相邻两个元素之间用单个空格间隔。
样例输入
4
样例输出
1 2 6 7
3 5 8 13
4 9 12 14
10 11 15 16
  1 /*2016年12月6日openjudge日常水题
  2      ————1.8.24     By Lxzy_Zby*/
  3 #include<cstdio>
  4 using namespace std;
  5 int a[15][15],x,y;
  6 int main()
  7 {
  8     int n,t=1;
  9     bool k=1,m=0;//设置bool变量,k表示 左下右上线,m表示上下两个三角形 
 10     scanf("%d",&n);
 11     while(m==0)//m=0时处理对角线以上的三角形 
 12     {
 13         if(k==1)//k=1时 
 14         {
 15             
 16             while(x>=0)
 17             {
 18                 if(y==n-1&&x==0)//上下两三角形分割线 
 19                 {
 20                     a[x][y]=t;
 21                     t++;
 22                     x++;
 23                     m=1;
 24                     k=0;
 25                     break;
 26                 }
 27                 a[x][y]=t;
 28                 t++;
 29                 if(x-1>=0&&y+1<n)
 30                 {
 31                     x--;
 32                     y++;
 33                 }
 34                 else
 35                 {
 36                     y++;
 37                     k=0;
 38                     x--;
 39                 }
 40             }
 41             if(m==0)
 42             x++;
 43             continue;
 44         }
 45         if(k==0)//k=0时 
 46         {
 47             while(y>=0)
 48             {
 49                 if(y==0&&x==n-1)//上下两三角形分割线 
 50                 {
 51                     a[x][y]=t;
 52                     t++;
 53                     y++;
 54                     m=1;
 55                     k=1;
 56                     break;
 57                 }
 58                 a[x][y]=t;
 59                 t++;
 60                 if(y-1>=0&&x+1<n)
 61                 {
 62                     x++;
 63                     y--;
 64                 }
 65                 else
 66                 {
 67                     x++;
 68                     y--;
 69                     k=1;
 70                 }
 71             }
 72             if(m==0)
 73             y++;
 74             continue;
 75         }
 76     }
 77     while(m==1&&t<=n*n)//下三角形 
 78     {
 79         if(k==0)//k=0 
 80         {
 81             while(x<n&&t<=n*n)
 82             {
 83                 a[x][y]=t;
 84                 t++;
 85                 if(x+1<n&&y-1>=0)
 86                 {
 87                     x++;
 88                     y--;
 89                 }
 90                 else
 91                 {
 92                     y++;
 93                     x++;
 94                     k=1;
 95                 }
 96             }
 97             x--;
 98             continue;
 99         }
100         if(k==1)//k=1 
101         {
102             while(y<n&&t<=n*n)
103             {
104                 a[x][y]=t;
105                 t++;
106                 if(y+1<n&&x-1>=0)
107                 {
108                     x--;
109                     y++;
110                 }
111                 else
112                 {
113                     y++;
114                     x++;
115                     k=0;
116                 }
117             }
118             y--;
119             continue;
120         }
121         
122     }
123     for(int i=0;i<n;i++)
124     {
125              for(int j=0;j<n;j++)
126                   printf("%d ",a[i][j]);
127                       printf("\n");
128       
129     }
130     return 0;
131 } 

 

1.8.24(待优化)

标签:names   大于   --   font   设置   ret   顺序   填充   依次   

原文地址:http://www.cnblogs.com/zby-ccsygz/p/6136051.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!