1156: 零起点学算法63——弓型矩阵
1021: 零起点学算法63——弓型矩阵
Time Limit: 1 Sec Memory Limit: 64 MB 64bit IO Format: %lldSubmitted: 89 Accepted: 38
[Submit][Status][Web Board]
Description
输出n*m的弓型矩阵
Input
多组测试数据
每组输入2个整数 n和m(不大于20)
每组输入2个整数 n和m(不大于20)
Output
输出n*m的弓型矩阵,要求左上角元素是1,(每个元素占2个位置,靠右)
Sample Input
- 4 3
Sample Output
- 1 2 3
- 6 5 4
- 7 8 9
- 12 11 10
参考代码:
1 #include<stdio.h> 2 #include<stdlib.h> 3 /* 4 Description 5 输出n*m的弓型矩阵 6 Input 7 多组测试数据 8 每组输入2个整数 n和m(不大于20) 9 Output 10 输出n*m的弓型矩阵,要求左上角元素是1,(每个元素占2个位置,靠右) 11 Sample Input 12 4 3 13 Sample Output 14 1 2 3 15 6 5 4 16 7 8 9 17 12 11 10 18 */ 19 int main() 20 { 21 int n, m; 22 while (scanf("%d%d", &n, &m) != EOF) 23 { 24 intint *ptos = calloc(n*m, sizeof(int)); 25 int i, j; 26 int tr = 1; //利用tr*=-1;进行判断输出顺序 tr为1时正序输出 -1时逆序 27 for (i = 1; i <= n*m; i++) 28 *(ptos + i - 1) = i; 29 for (i = 0, j = 0; i < n*m;) 30 { 31 if (tr == 1) 32 { 33 for (j = i; j <= i+m-1; j++) 34 { 35 if (j == i+m-1) 36 printf("%2d\n", *(ptos + j)); 37 else 38 printf("%2d ", *(ptos + j)); 39 } 40 tr *= -1; 41 i += m; 42 } 43 else 44 { 45 for (j = i+m-1; j >= i; j--) 46 { 47 if (j == i) 48 { 49 printf("%2d\n", *(ptos + j)); 50 } 51 else 52 printf("%2d ", *(ptos + j)); 53 } 54 tr *= -1; 55 i += m; 56 } 57 } 58 } 59 return 0; 60 }
posted on 2018-02-27 18:20 AliceNEET 阅读(1146) 评论(0) 编辑 收藏 举报