游戏一旦掌握了规律,其实是有点单调和无聊的,不过却是学习递归的一个绝佳例子,想当初学习老谭C的时候,就卡在这儿好长时间。对初学编程的人来说,递归本身就不易理解,如果使用C语言没有好的调试环境就更难去理解了。在这方面,VS调试输出是真方便,一目了然。但要想理解递归求解,还是得先玩一玩游戏本身,有点感受。另外,设计一下这个游戏也可以加深对它的理解,同时还可以对数据结构中的栈有一个简单的认识
/先说I(经典问题),有三,A从小到大从上至下放有N个盘子,现在要搬到目标C上,规则小的必需放在大的上面,每次搬一个,求最小步数。这个问题简单,DP:a[n]=a[n-1]+1+a[n-1],先把上面的n-1个放在B上,把最大的放在目标C上,再把N-1个放回到C上即可。现在是I...
原创 2021-08-04 11:13:02
1763阅读
III Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 13271 Accepted Submission(s): 6095 Problem
转载 2016-01-30 17:19:00
268阅读
2评论
目录HDU 1207 II(四柱)HDU 20 IIIHDU 2077 IVHDU 1995 VHDU 1996 VIHDU 1997 VIIHDU 2184
原创 2021-12-27 10:47:05
555阅读
源于印度一个古老传说的益智类游戏。传说上帝创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上安大小顺序摞着64片黄金圆盘。上帝命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。以上是来自百度百科的说法,有兴趣的可以到网上搜一下。之所以把作为第一个游戏来讲,并非因为它本身是计算机编程中描述递归算法的经典
原创 2014-11-11 11:01:09
1092阅读
1点赞
有三个立柱A、B、C。A柱上穿有大小不等的圆盘n个,较大的圆盘在下,较小的圆盘在上。要求把A柱上的圆盘全部移到C柱上,保持大盘在下、小盘在上的规律(可借助B柱)。每次移动只能把一个柱子最上面的圆盘移到另一个柱子的最上面。请输出移动过程。 该问题用递归来实现较为简单方便 代码: def han(n,a ...
转载 2021-07-13 13:58:00
1186阅读
2评论
package io;/** * content: * 移动步骤: * 如果只有一个盘子:就直接将盘子从A移动到C * 如果不是一个盘子的话,就采用递归,将盘子划分为两个大部分,将最上面的n-1个盘子从A移动到B(此时C是临时盘子) * 之后再将n-1个盘子从B移动到C(此时临时盘子是A) */public class Hnn{ public stat...
原创 2022-09-08 15:23:18
70阅读
图示 A B C目的把A中的木板都放到C上(保证每次都是大下小上)思路——递归对于一共n个
原创 2022-08-21 00:38:38
485阅读
C++语言版的程序,手动输入盘子的个数
原创 2011-03-24 19:08:47
598阅读
1评论
用python处理问题
原创 2021-03-16 06:35:52
1694阅读
1点赞
完成n层移动所需最少步数
原创 2022-11-07 08:36:15
126阅读
递归中最为经典就是,学会了就基本上能掌握递归。#include <stdio.h>void hanno(int n,char x,char y, char z);void hanno(int n,char x,char y, char z) { if(n==1) { printf("%c-->%c\n",x,z)
原创 2022-11-09 09:01:45
73阅读
#includeusing namespace std;# define maxn 1000000+10void tower(int n,char a,char b,char c){ if(n==1) { cout>n; tower(n...
转载 2018-08-27 21:02:00
102阅读
2评论
/* 经典算法——1 河内之: 有三个柱子和 n 个大小各不相同的 盘子。开始时,所有盘子以状叠放在柱子 A 上,要求一定规 则,将柱子 A 上的所有盘子移到柱子 B 上,柱子 C 为移动缓 冲柱。 移动规则如下: (1)一次只能移动一个盘子。 (2)任何时候不能把盘子放在比他小的盘子下面。 */ /* 采用递归的方法解决此问题。 (1...
原创 2022-09-21 15:52:03
712阅读
1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 using namespace std; 8 void Move(int n,char a,char b) 9
原创 2022-05-25 10:35:25
99阅读
#include<iostream>#include<string.h>using namespace std;int num=0; //统计移动次数 void hanio(int n,ch
原创 2022-08-19 15:54:43
153阅读
1 #include <stdio.h> 2 3 /** 4 * 5 * 游戏规则: 6 * 下一层必须大于上一层 7 * 每次只能移动最上面的一层 8 * 获取圆盘的个数n 9 * n=3,分步骤:a->c,a->b,c->b,a-c,b-a,b->c,a->c 10 */ 11 void ...
转载 2021-08-21 21:36:00
139阅读
2评论
算法之问题
原创 2008-06-02 16:08:12
845阅读
#include void main() { void hanoi(int n,char one ,char two, char three); int m; scanf("%d",&m); printf("The step to moving %d disk:\n"); hanoi(m,'A','B','C'); getch();
转载 精选 2011-06-20 11:35:46
527阅读
http://pan.baidu.com/s/1cTtGq使用vs2008进行编译// hanoric.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"   //定义最大盘子编号 #define N 6 struct pan{   int num;   char&n
原创 2014-07-18 15:56:03
757阅读
  • 1
  • 2
  • 3
  • 4
  • 5