在NOJ上遇到关于汉诺塔步数的求解问题

开始读时一脸懵逼,甚至不知道输入的数据是什么意思

题目描述:给出汉诺塔的两个状态,从初始状态移动到目的状态所需要的最少步数


对于初级汉诺塔步数问题,我们可以直接通过公式进行求解,概括来说,从一个柱子到另一个柱子移动n个盘子,需要2的n次方-1步

下面看一下输入的是什么数据,通过一个例子进行说明

下面看问题的求解

对题目的分析就到这,下面给出具体的程序:

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
long long fun(int *num,int i,int f)
{
if(i<)return ;
if(num[i]==f)return fun(num,i-,f);
return fun(num,i-,-num[i]-f)+(1LL<<(i-));
}
int main()
{
long long ans;
int n;
int start[],target[];
while(scanf("%d",&n))
{
if(n==)break;
for(int i = ;i<=n;i++)scanf("%d",&start[i]);
for(int i = ;i<=n;i++)scanf("%d",&target[i]);
int index_end = n;
ans = ;
while(index_end>= && start[index_end]==target[index_end]){
index_end--;
}
if(index_end==){
printf("0\n");
continue;
}else{
int other = -start[index_end]-target[index_end];
ans = fun(start,index_end-,other)+fun(target,index_end-,other)+;
printf("%lld\n",ans);
} } return ;
}

第一次博客园的总结就这到这啦

如果大家有疑问可以留言讨论

Hanoi II——汉诺塔步数求解进阶问题的更多相关文章

  1. hanoi(汉诺塔)递归实现

    汉诺塔:汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具.大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘.大梵天命令婆罗门把圆盘从下面开始按大小顺序 ...

  2. 《hanoi(汉诺塔)问题》求解

    //Hanoi(汉诺)塔问题.这是一个古典的数学问题,用递归方法求解.问题如下: /* 古代有一个梵塔,塔内有3个座A,B,C,开始时A座上有64个盘子,盘子大小不等,大的在下,小的在上. 有一个老和 ...

  3. (算法)Hanoi Problem汉诺塔问题

    Problem: There are three poles and N disks where each disk is heaver than the next disk. In the init ...

  4. Java求解汉诺塔问题

    汉诺塔问题的描述如下:有3根柱子A.B和C,在A上从上往下按照从小到大的顺序放着一些圆盘,以B为中介,把盘子全部移动到C上.移动过程中,要求任意盘子的下面要么没有盘子,要么只能有比它大的盘子.编程实现 ...

  5. 几年前做家教写的C教程(之四专讲了指针与汉诺塔问题)

    C语言学习宝典(4) 指针:可以有效的表示复杂的数据结构,能动态的分配动态空间,方便的使用字符串,有效的使用数组,能直接处理内存单元 不掌握指针就没有掌握C语言的精华 地址:系统为每一个变量分配一个内 ...

  6. Python算法_递归:汉诺塔

    游戏链接:https://zhangxiaoleiv.github.io/app/TowerOfHanoi/Hanoi.html 汉诺塔游戏算法: 1 def hanoi(n,x,y,z): 2 if ...

  7. 【Python实践-3】汉诺塔问题递归求解(打印移动步骤及计算移动步数)

    # -*- coding: utf-8 -*- #汉诺塔移动问题 # 定义move(n,a,b,c)函数,接受参数n,表示3个柱子A.B.C中第1个柱子A的盘子数量 # 然后打印出把所有盘子从A借助B ...

  8. 汉诺塔问题II(模拟)

    汉诺塔问题II Time Limit: 1 Sec  Memory Limit: 64 MB Submit: 1556  Solved: 720 Description 汉诺塔(又称河内塔)问题是源于 ...

  9. 汉诺塔-Hanoi

    1. 问题来源: 汉诺塔(河内塔)问题是印度的一个古老的传说. 法国数学家爱德华·卢卡斯曾编写过一个印度的古老传说:在世界中心贝拿勒斯(在印度北部)的圣庙里,一块黄铜板上插着三根宝石针.印度教的主神梵 ...

随机推荐

  1. bootstrap最简单的导航条

    <nav class="navbar navbar-default navbar-static-top"> <div class="navbar-hea ...

  2. PostgreSQL 时间函数 extract函数

    计算时间差天数 select extract(day FROM (age('2017-12-10'::date , '2017-12-01'::date)));   计算时间差秒数 select ex ...

  3. Vin2008 X64安装.Net Framework1.1

     http://www.iis.net/learn/install/installing-iis-7/how-to-install-aspnet-11-with-iis-on-vista-and- ...

  4. Cogs 12. 运输问题2(有上下界的有源汇最大流)

    运输问题2 ★★☆ 输入文件:maxflowb.in 输出文件:maxflowb.out 简单对比 时间限制:1 s 内存限制:128 MB 运输问题 [问题描述] 一个工厂每天生产若干商品,需运输到 ...

  5. 【csp模拟赛九】--dfs2

    dfs 代码: #include<algorithm> #include<iostream> #include<cstdio> using namespace st ...

  6. Kalman实际应用总结

    目录 Kalman理论介绍 一. 简单理论介绍理论 二. 升华理论介绍 Kalman基本应用 一. Kalman跟踪/滤波 二. Kalman预测/融合(单传感器) 三. Kalman多传感器融合A ...

  7. VTK 简单点云数据显示绘制

    基于vtkPolyData,绘制时除了输入点坐标,还需要通过setVerts指定点绘制信息. simplePoints.txt的内容为简单的 xyz,如: 20 20 20 20 20 30 20 2 ...

  8. x2goserver 连接问题

    The remote proxy closed the connection while negotiating the session. This may be due to the wrong a ...

  9. Alpha项目冲刺! Day5-产出

    各个成员今日完成的任务 林恩:任务分工,博客撰写,了解安卓环境搭建 杨长元:安卓本地数据库基本建立 李震:改了图标和背景 胡彤:完善服务端 寇永明:研究测试代码 王浩:研究测试代码 李杰:研究测试代码 ...

  10. 加了https,为什么网站的有些网页是安全的,有些网页不完全安全

    加了https,为什么网站的有些网页是安全的,有些网页不完全安全 一.总结 一句话总结: 这里原因:这里出现的问题是 网站上的图片删了没找到 原因:用了http地址(自己的或者别人的)的资源 避免这类 ...