12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 |
- #include <stdio.h>
- #include <stdlib.h>
- /* 样例输入
- 3 3
- 140 160 140
- 183 172 170
- 180 181 174
- 输出行平均值
- */
- //创建行列式
- int **arrInit(int m, int n);
- // 释放行列式
- void arrClose(int m, int n, int **pInt);
- int max(int a, int b);
- int min(int a, int b);
- int main() {
- int m, n;
- scanf("%d", &n);
- m = n;
- int **l = arrInit(m, n);
- arrClose(m, n, l);
- return 0;
- }
- void arrClose(int m, int n, int **pInt) {
- for (int i = 0; i < m; ++i) {
- free(pInt[i]);
- }
- free(pInt);
- }
- int **arrInit(int m, int n) {
- int **l;
- if (m % 2) {
- int k = m / 2;
- l = (int **) malloc(m * sizeof(int *));
- for (int i = 0; i < m; i++) {
- l[i] = (int *) malloc(n * sizeof(int));
- for (int j = 0; j < n; ++j) {
- l[i][j] = 1 + k - max(abs(k - i), abs(k - j));
- printf("%d", l[i][j]);
- if (j != n - 1)printf(" ");
- }
- printf("\n");
- }
- } else {
- int k = m / 2;
- l = (int **) malloc(m * sizeof(int *));
- for (int i = 0; i < m; i++) {
- l[i] = (int *) malloc(n * sizeof(int));
- for (int j = 0; j < n; ++j) {
- if (j + i >= k * 2)
- l[i][j] = k - max(abs(k - i), abs(k - j));
- else
- l[i][j] = 1 + k - max(abs(k - i), abs(k - j));
- printf("%d", l[i][j]);
- if (j != n - 1)printf(" ");
- }
- printf("\n");
- }
- }
- return l;
- }
- int min(int a, int b) {
- return a < b ? a : b;
- }
- int max(int a, int b) {
- return a > b ? a : b;
- }
|