AliceNEET

导航

1156: 零起点学算法63——弓型矩阵

1021: 零起点学算法63——弓型矩阵

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

Description

输出n*m的弓型矩阵

Input

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

Output

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

Sample Input 

  1. 4 3

 

Sample Output

  1. 1  2  3  
  2. 6  5  4
  3. 7  8   9
  4. 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编辑  收藏  举报