本文共 628 字,大约阅读时间需要 2 分钟。
主要是模拟, 需要注意的 是类似插入排序 先试探 下一个位置 是否可以放入数 如果不可以就转向 下、左、上、右
#include#define MAX 105#include int a[MAX][MAX];int main() { int n; scanf("%d",&n); int t = 0; memset(a,0,sizeof(a)); int i = 0, j = n; //注意 初始值 while(t < n*n){ while(i < n && a[i+1][j] == 0){ ++i; a[i][j] = ++t; } while(j > 1 && a[i][j-1] == 0){ --j; a[i][j] = ++t; } while(i > 1 && a[i-1][j] == 0){ --i; a[i][j] = ++t; } while(j < n && a[i][j+1] == 0){ ++j; a[i][j] = ++t; } } for(int i = 1; i <= n; ++i){ for(int j = 1; j <= n; ++j){ printf("%d ",a[i][j]); } printf("\n"); } return 0; }
转载地址:http://mmimi.baihongyu.com/