<蛇形填数>--算法竞赛 入门经典(第2版)- 3.1 数组 程序3-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 。
类比上面这种数学中的矩阵,我们可以考虑使用一个二维数组来储存。
解题思路:从右上角开始往下填数,当到底的时候转向左填值,当到左边的边的时候转向上填数,当到最上面的时候转向右填值...依次类推。第一轮转圈的判断条件很简单,就是当横坐标小于行数、纵坐标小于列数的时候。但是这样循环下去当到第二轮循环的时候就会把第一轮的数值覆盖,即一直在最外面的一圈循环下去(当把数值填够之后停止)。我们可以这样解决这个问题:起始把数组置成0,然后在判断转向的时候加上&&非下一个位置上的值即可。
以下是具体解题的代码:
#include <iostream>
#include <cstdio>
#include <cstring>
#define maxn 4
using namespace std;
int a[maxn][maxn]; int main() {
int i, j;
/*
for(i = 0; i < maxn; i++) {
for(j = 0; j < maxn; j++)
a[i][j] = 0;
}*/
memset (a,,sizeof(a));//这是cstring中的函数,当然也可以用上面的方法赋值
a[][maxn-] = ;
j = maxn-;
i = ;
int count = ;///从1开始填数 /*---------思考下面为什么是错误的???
while(count < maxn*maxn)
{
while(i+1 < maxn && !a[++i][j]) a[i][j] = ++count;
while(j-1 >= 0 && !a[i][--j]) a[i][j] = ++count;
while(i-1 >= 0 && !a[--i][j]) a[i][j] = ++count;
while(j+1 < maxn && !a[i][++j]) a[i][j] = ++count;
}*/ while(count < maxn*maxn)//①
{
while(i+ < maxn && !a[i+][j]) a[++i][j] = ++count;//②
while(j- >= && !a[i][j-]) a[i][--j] = ++count;
while(i- >= && !a[i-][j]) a[--i][j] = ++count;
while(j+ < maxn && !a[i][j+]) a[i][++j] = ++count;
}
for(i = ; i < maxn; i++)//输出
{
for(j = ; j < maxn; j++)
printf("%3d",a[i][j]);
cout << endl;
}
return ;
}
有兴趣的码友可以考虑一下:
1、①处为什么不是 count <= maxn*maxn ;
2、②处为什么不是 count++ ;
3、②处可不可以改成 while(i+1 < maxn && !a[++i][j]) a[i+1][j] = ++count ;
欢迎码友评论,谢谢支持。
<蛇形填数>--算法竞赛 入门经典(第2版)- 3.1 数组 程序3-3 蛇形填数的更多相关文章
- [刷题]算法竞赛入门经典(第2版) 5-13/UVa822 - Queue and A
题意:模拟客服MM,一共有N种话题,每个客服MM支持处理其中的i个(i < N),处理的话题还有优先级.为了简化流程方便出题,设每个话题都是每隔m分钟来咨询一次.现知道每个话题前来咨询的时间.间 ...
- [刷题]算法竞赛入门经典(第2版) 5-10/UVa1597 - Searching the Web
题意:不难理解,照搬题意的解法. 代码:(Accepted,0.190s) //UVa1597 - Searching the Web //#define _XIENAOBAN_ #include&l ...
- [刷题]算法竞赛入门经典(第2版) 5-7/UVa12100 - Printer Queue
题意:一堆文件但只有一个打印机,按优先级与排队顺序进行打印.也就是在一个可以插队的的队列里,问你何时可以打印到.至于这个插队啊,题目说"Of course, those annoying t ...
- [刷题]算法竞赛入门经典(第2版) 5-1/UVa1593 - Alignment of Code
书上具体所有题目:http://pan.baidu.com/s/1hssH0KO 代码:(Accepted,0 ms) //UVa1593 - Alignment of Code #include&l ...
- [刷题]算法竞赛入门经典(第2版) 4-10/UVa815 - Flooded!
书上具体所有题目:http://pan.baidu.com/s/1hssH0KO 代码:(Accepted,0 ms) //UVa815 - Flooded! #include<iostream ...
- [刷题]算法竞赛入门经典(第2版) 4-8/UVa12108 - Extraordinarily Tired Students
书上具体所有题目:http://pan.baidu.com/s/1hssH0KO 代码:(Accepted,0 ms) //UVa12108 - Extraordinarily Tired Stude ...
- [刷题]算法竞赛入门经典(第2版) 4-7/UVa509 - RAID!
书上具体所有题目:http://pan.baidu.com/s/1hssH0KO 代码:(Accepted,0 ms) //UVa509 - RAID! #include<iostream> ...
- [刷题]算法竞赛入门经典(第2版) 4-6/UVa508 - Morse Mismatches
书上具体所有题目:http://pan.baidu.com/s/1hssH0KO 代码:(Accepted,10 ms) //UVa508 - Morse Mismatches #include< ...
- [刷题]算法竞赛入门经典(第2版) 4-5/UVa1590 - IP Networks
书上具体所有题目:http://pan.baidu.com/s/1hssH0KO 代码:(Accepted,0 ms) //UVa1590 - IP Networks #include<iost ...
随机推荐
- JS获取图片实际宽高
JS获取图片实际宽高,以及根据图片大小进行自适应 <img src="http://xxx.jpg" id="imgs" onload="ada ...
- Lucene学习-深入Lucene分词器,TokenStream获取分词详细信息
Lucene学习-深入Lucene分词器,TokenStream获取分词详细信息 在此回复牛妞的关于程序中分词器的问题,其实可以直接很简单的在词库中配置就好了,Lucene中分词的所有信息我们都可以从 ...
- 去除scons构建动态库的前缀lib
如何使用scons构建工程,请参考快速构建C++项目工具Scons,结合Editplus搭建开发环境. 编译SharedLibrary项目的时候,生产的so文件时自动加上lib, 例如: env = ...
- 传统的MVC模式
对于MVC模式,我们可以将可视化UI呈现,UI处理逻辑和业务逻辑分别定义在View,Controller,和Model中. 可视化UI呈现->View UI处理逻辑->Controller ...
- 移动收入超PC端 盛大文学战略转型初见成效
随着智能手机和平板电脑的普及,越来越多的互联网服务也开始向移动端拓展,除了传统的互联网服务如搜索.即时通信之外,网络文学这项新兴的互联网业务也没忽视对移动端的布局. 7月9日,中国最大的网络文学出版平 ...
- apache+php+mysql的分布安装
一.Apache+php+mysql的版本: Apache:2.2.22 Mysql:5.5.24 Php:5.3.13 二.apache+php+mysql的分布安装 注意:卸载软件之前要先停止服务 ...
- MySQL闪回原理与实战
本文将介绍闪回原理,给出笔者的实战经验,并对现存的闪回工具作比较. DBA或开发人员,有时会误删或者误更新数据,如果是线上环境并且影响较大,就需要能快速回滚.传统恢复方法是利用备份重搭实例,再应用去除 ...
- 【Java每日一题】20170113
20170112问题解析请点击今日问题下方的"[Java每日一题]20170113"查看(问题解析在公众号首发,公众号ID:weknow619) package Jan2017; ...
- angularJS 自定义元素和属性
创造自定义元素和属性的方法是:directive('string',function(){ return{}; }); ①函数接收两个参数:一个字符串(指令的名字),一个函数: ②回调函数必须返回一个 ...
- DBCP连接池的使用
1.新建工程 2.导入commons-dbcp commons-logging commons-pool这三个包 3.创建dbcpconfig.properties的文件 实例如下 #连接设置 dri ...