摘要: 汉诺塔IIITime Limit: 1000/1000 MS (Java/Others)Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 3657Accepted Submission(s): 1668Problem Description约19世纪末,在欧州的商店中出售一种智力玩具,在一块铜板上有三根杆,最左边的杆上自上而下、由小到大顺序串着由64个圆盘构成的塔。目的是将最左边杆上的盘全部移到右边的杆上,条件是一次只能移动一个盘,且不允许大盘放在小盘的上面。现在我们改变游戏的玩法,不允许直接从最左(右)边移到最右(左) 阅读全文
posted @ 2011-08-12 21:49 沐阳 阅读(3985) 评论(0) 推荐(0)
摘要: 首先解释下这题的名字,下沙是个地名,面的是一种公共交通工具,小是个形容词...... 对于这题那便是DFS纯暴力了,每次先到达不同的第一站,再扩展下去到第二站... 暴力枚举每一种可能,最后保留最小值。 代码如下:#include <cstdio>#include <cstring>#include <cstdio>using namespace std;int map[35][35], N, K, obj[35], RK;void DFS( int pos, int step, int dis, int &ans ){ if( step== RK 阅读全文
posted @ 2011-08-12 15:09 沐阳 阅读(562) 评论(0) 推荐(1)
摘要: 可恶的模拟题,刚进入的那一步竟然不算,贡献了多次WA啊,只要注意这点应该就木有问题了。#include <cstring>#include <cstdlib>#include <cstdio>using namespace std;int N, M, sx, sy;char map[15][15], hash[15][15];bool out( int x, int y ){ if( x< 1|| x> N|| y< 1|| y> M ) { return true; } return false;}bool DFS( int &am 阅读全文
posted @ 2011-08-12 14:39 沐阳 阅读(228) 评论(0) 推荐(0)
摘要: 给定一个非递减的序列,要求从这些序列中找出一系列的数相加等于要求的数。这题的主要任务就是怎样去重。 现分析如下: 对于给定的两个非递减序列,A, B, C, D 用来映射各个数的位置,2(A) 1(B) 1(C) 1(D) 以及 2(A) 2(B) 2(C) 1(D), 要求求出和为3的表达式。 显然前面的序列递归下去会首先出现A+ B的组合,由于此时A+ B已经等于了3,所以递归就会回溯,此时会形成A+ C的组合,按照正常人的思维,这个解肯定是不能够取的,但是计算机有这么聪明吗?显然还是要我们来设计各种复杂的判断...... 转回正题,我们在递归时有一个属性就是递归的层数,而该题的求解就会. 阅读全文
posted @ 2011-08-12 11:35 沐阳 阅读(459) 评论(0) 推荐(0)