首页 > 其他分享 >汉诺塔DP

汉诺塔DP

时间:2023-04-16 11:12:15浏览次数:28  
标签:return int Recursion 汉诺塔 盘子 DP

题目描述

如果将课本上的汉诺塔问题稍做修改:给定 N 只盘子,3 根柱子,但是允许每次最多移动相邻的 M 只盘子(当然移动盘子的数目也可以小于 M), 最少需要多少次?

输入格式

输入数据仅有一行,包括两个数 N 和 M(0<=M<=N<=8)

输出格式

仅输出一个数,表示需要移动的最少次数  

#include<iostream>
using namespace std;

int Recursion(int n)
{
if (n == 1)
return 1;
if (n == 2)
return 2;
if (n > 2)
return Recursion(n - 1) + Recursion(n - 2);
}
int main()
{
int n=0;
while (scanf("%d", &n) != EOF)
{
cout << Recursion(n) << endl;
}
return 0;
}

标签:return,int,Recursion,汉诺塔,盘子,DP
From: https://www.cnblogs.com/crocodile1006/p/17322690.html

相关文章

  • Java中创建线程的方式以及线程池创建的方式、推荐使用ThreadPoolExecutor以及示例
    场景Java中创建线程的方式有三种1、通过继承Thread类来创建线程定义一个线程类使其继承Thread类,并重写其中的run方法,run方法内部就是线程要完成的任务,因此run方法也被称为执行体,使用start方法来启动线程。2、通过实现Runanle接口来创建线程首先定义Runnable接口,并重写Runnable接口......
  • ThreadPoolTaskExecutor和ThreadPoolExecutor区别
    ThreadPoolExecutor是Java原生的线程池类,而ThreadPoolTaskExecutor是Spring推出的线程池工具  一、从核心参数看两者关系 ThreadPoolExecutor(java.util.concurrent) publicThreadPoolExecutor(intcorePoolSize,intmaximumPoolSize,......
  • RDP设置字体为平滑效果(解决字体锯齿)
    方法被远程的系统上:主要系统上:锯齿字体效果平滑字体效果 参考:https://blog.vircloud.net/operations/fix-rdp-display.html......
  • Wordpress学习
    WordPress大学-WordPress快速入门篇_哔哩哔哩_bilibili Wordpress教程-Elementor设计与布局_哔哩哔哩_bilibili ......
  • Centos 服务器放行TCP、UDP端口教程
     在运行CentOS操作系统时,经常需要放行某个端口,以便应用程序能够正常运行。今天飞飞将和你分享centos服务器放行tcp、udp端口教程,希望可以帮助到您~ 首先用SSH连接工具连接服务器,如果你不知道如何连接Linux服务器,可以参考下这篇教程 比如我们在安装宝塔后面板无法访问,提......
  • 区间DP
    区间DP区间类动态规划是线性动态规划的扩展,它在分阶段地划分问题时,与阶段中元素出现的顺序和由前一阶段的哪些元素合并而来有很大的关系。例题石子合并洛谷1880#include<bits/stdc++.h>usingnamespacestd;intn,i,j,k,l,ma,mi,a[205],b[205],f[205][205],g[205][205];in......
  • 状压DP
    状压DP状压DP是动态规划的一种,通过将状态压缩为整数来达到优化转移的目的。例题售货员的难题洛谷1171#include<bits/stdc++.h>usingnamespacestd;intn,i,j,k,min1,a[25][25],f[1050000][25];intmain(){ cin>>n; for(i=1;i<=n;i++) for(j=1;j<=n;j++) cin>......
  • 树形DP
    树形DP树形DP,即在树上进行的DP。由于树固有的递归性质,树形DP一般都是递归进行的。例题没有上司的舞会洛谷1352#include<bits/stdc++.h>usingnamespacestd;intn,i,x,y,b[6005],f[6005][2];vector<int>a[6005];voidsc(intx){ for(inti=0;i<a[x].size();i++) ......
  • 数位DP
    数位DP数位是指把一个数字按照个、十、百、千等等一位一位地拆开,关注它每一位上的数字。如果拆的是十进制数,那么每一位数字都是0~9,其他进制可类比十进制。数位DP:用来解决一类特定问题,这种问题比较好辨认,一般具有这几个特征:要求统计满足一定条件的数的数量(即,最终目的为计数);......
  • DP优化
    DP优化单调队列优化WatchingFireworksisFunCF372C#include<bits/stdc++.h>usingnamespacestd;typedeflonglongll;lln,m,d,i,j,k,l,r,ma,f[2][150005],g[150005],a[305],b[305],c[305];intmain(){ cin>>n>>m>>d; for(i=1;i<=m;i++) ......