#include <cstring>
#include <cmath>
#include <cctype>
#include <cstdio>
#include <iostream>
#define MAX 39
using namespace std;
int a[MAX][MAX];
void fill(int n) {
int last_r=0,last_c=(n-1)>>1;
a[last_r][last_c]=1;
for(int i = 2; i <= n*n; i++) {
if(last_r==0&&last_c!=n-1) {
last_r=n-1;++last_c;
} else if(last_c==n-1&&last_r!=0) {
--last_r;last_c=0;
} else if(last_r==0&&last_c==n-1) {
++last_r;
} else if(a[last_r-1][last_c-1]>0) {
++last_r;
} else {
--last_r;++last_c;
}
printf("r=%d,c=%d\n", last_r, last_c);
a[last_r][last_c]=i;
}
}
int main() {
int n = 3;
fill(n);
for(int i = 0; i < n; i++) {
for(int j = 0; j < n; j++) {
printf("%d%s",a[i][j], (j==n-1)?"\n":" ");
}
}
}
fill的倒数第2条语句, 注释和不注释printf的结果竟然不一样! 为什么?