NYOJ 33蛇形填数

来源:互联网 发布:java 多个注解 编辑:程序博客网 时间:2024/05/28 17:04

题目链接


主要是模拟, 需要注意的 是类似插入排序  先试探 下一个位置 是否可以放入数 如果不可以就转向 下、左、上、右

#include<stdio.h>#define MAX 105#include<string.h>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;} 

原创粉丝点击