1157: 零起点学算法64——回型矩阵
1157: 零起点学算法64——回型矩阵
Time Limit: 1 Sec Memory Limit: 64 MB 64bit IO Format: %lldSubmitted: 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) 编辑 收藏 举报