博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
算法竞赛入门经典 例题 3-2 蛇形填数
阅读量:6294 次
发布时间:2019-06-22

本文共 998 字,大约阅读时间需要 3 分钟。

在n*n方阵里填入1,2,„,n*n。要求填成蛇形。比如n=4时方阵为 

10    11   12   1 

  9    16   13   2 

  8    15   14   3

  7     6     5    4  

上面的方阵中。多余的空格仅仅是为了便于观察规律,不必严格输出。n≤8。

#include 
#include
#include
#define MAXN 10int a[MAXN][MAXN];int main(int argc, char *argv[]){ int n, count = 1; int x, y; scanf("%d", &n); memset(a, 0, sizeof(a)); x = 0; y = n-1; a[x][y] = 1; while(count < n*n) { while(x+1
=0 && !a[x][y-1]) a[x][--y] = ++count; while(x-1>=0 && !a[x-1][y]) a[--x][y] = ++count; while(y+1
0 && !a[x][y]) {a[x][y] = count; y--; count++; } while(x > 0 && !a[x][y]) {a[x][y] = count; x--; count++; } while(y < n-1 && !a[x][y]) {a[x][y] = count; y++; count++; } } for(x = 0; x <= n-1; x++) { for(y = 0; y< n-1; y++) printf("%d ", a[x][y]); printf("%d\n", a[x][y]); } */ system("PAUSE"); return 0;}
总结:1 推断是否越界和推断是否填过数字

            2 边界条件,>还是>=等,先推断,后x,y才变化

            3 x++里x也变化,要牢记

            4 a[0][3]一開始就赋值了

转载地址:http://xkvta.baihongyu.com/

你可能感兴趣的文章
<转>云主机配置OpenStack使用spice的方法
查看>>
java jvm GC 各个区内存参数设置
查看>>
[使用帮助] PHPCMS V9内容模块PC标签调用说明
查看>>
基于RBAC权限管理
查看>>
数学公式的英语读法
查看>>
留德十年
查看>>
迷人的卡耐基说话术
查看>>
PHP导出table为xls出现乱码解决方法
查看>>
PHP问题 —— 丢失SESSION
查看>>
Java中Object类的equals()和hashCode()方法深入解析
查看>>
数据库
查看>>
dojo.mixin(混合进)、dojo.extend、dojo.declare
查看>>
Python 数据类型
查看>>
iOS--环信集成并修改头像和昵称(需要自己的服务器)
查看>>
PHP版微信权限验证配置,音频文件下载,FFmpeg转码,上传OSS和删除转存服务器本地文件...
查看>>
教程前言 - 回归宣言
查看>>
PHP 7.1是否支持操作符重载?
查看>>
Vue.js 中v-for和v-if一起使用,来判断select中的option为选中项
查看>>
Java中AES加密解密以及签名校验
查看>>
定义内部类 继承 AsyncTask 来实现异步网络请求
查看>>