AliceNEET

导航

1157: 零起点学算法64——回型矩阵

1157: 零起点学算法64——回型矩阵

Time Limit: 1 Sec  Memory Limit: 64 MB   64bit IO Format: %lld
Submitted: 3148  Accepted: 1211
[Submit][Status][Web Board]

Description

输出n*m的回型矩阵

 

Input

多组测试数据 
每组输入2个整数 n和m(不大于20)  

 

Output

输出n*m的回型矩阵,要求左上角元素是1,(每个元素占2个位置,靠右) 

 

Sample Input 

 
4 3

 

Sample Output

 1  2  3
10 11  4
 9 12  5
 8  7  6

 

参考代码

 

 

 1 #include <stdio.h>
 2 const int N = 20;
 3 int main()
 4 {
 5     int n,m;
 6     int index, i, j,c;
 7     while(scanf("%d%d",&m,&n)!=EOF)
 8     {
 9         i = j = 0;
10         index = 1;
11         int arr[N][N];
12         if(m > n)
13         {
14             if(n%2 == 0)
15                 c=n/2;
16             else
17                 c=n/2+1;
18         }
19         else
20         {
21             if(m%2 == 0)
22                 c=m/2;
23             else
24                 c=m/2+1;
25         }
26         for(i=0; i<c; i++)
27         {
28             for(j=i; j<n-i-1; j++) //输入当前行的数
29                 arr[i][j]=index++;
30             for(j=i; j<m-i-1; j++) //输入当前列的数
31                 arr[j][n-i-1]=index++;
32             for(j=n-i-1; j>i; j--)
33             {
34                 if(index <= m*n)
35                     arr[m-i-1][j]=index++;//输入第m-i-1行的数
36             }
37             for(j=m-i-1; j>i; j--)
38             {
39                 if(index <= m*n)
40                     arr[j][i]=index++; //输入第i列的数
41             }
42         }
43         if(index-1 < m*n) //判断当输入行和列是奇数时最中心的那个数有没有输入,即最后一个数有没有输入
44             arr[m/2][n/2] = m*n;
45         for(i=0; i<m; i++)
46         {
47             for(j=0; j<n-1; j++)
48             {
49                 printf("%2d ", arr[i][j]);
50             }
51             printf("%2d\n",arr[i][n-1]);
52         }
53     }
54     return 0;
55 }

 

posted on 2018-03-05 16:17  AliceNEET  阅读(1326)  评论(0编辑  收藏  举报