|
@@ -0,0 +1,85 @@
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+#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;
|
|
|
+}
|