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 }

 


注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
  © 2014-2022 ITdaan.com 联系我们: