当前位置: 首页 > news >正文

制作社交app的网站/网络优化公司有哪些

制作社交app的网站,网络优化公司有哪些,怎样做网站变手机软件,做网站 毕业设计Description 你对经典的hanoi塔问题一定已经很熟悉了。有三根柱子,n个大小不一的圆盘,要求大盘不能压在小盘上,初始时n个圆盘都在第一根柱子上,最少要多少步才能挪到最后一根柱子上? 现在我们来将hanoi塔扩展一下&…

Description

你对经典的hanoi塔问题一定已经很熟悉了。有三根柱子,n个大小不一的圆盘,要求大盘不能压在小盘上,初始时n个圆盘都在第一根柱子上,最少要多少步才能挪到最后一根柱子上?
现在我们来将hanoi塔扩展一下,由三根柱子扩展到四根柱子,其余规则不变。例如,3个圆盘,四根柱子A到D,初始时圆盘都A柱上,我们用五步就可以将圆盘都挪到D柱上:
第一步:将圆盘1从A挪到B;
第二步:将圆盘2从A挪到C;
第三步:将圆盘3从A挪到D;
第四步:将圆盘2从C挪到D;
第五步:将圆盘1从B挪到D。
你的任务是写一个程序求解四柱子hanoi塔问题最少要多少步可以解决。

Input

输入只有一行,为一个正整数n。(1<=n<=1000)

Output

输出为一个正整数,代表n盘四柱子hanoi塔问题最少要多少步可以解决。

Sample Input

3

Sample Output

5

Solution

设f[ i ]表示在四柱汉诺塔中,把i个盘子全部移到另一个盘子上的最小步数。

g[ i ]表示三柱汉诺塔中,把i个盘子全部移到另一个盘子上的最小步数。

则有g[ i ]=g[ i-1 ]*2+1,

f[i]=min(f[j]+g[i-j-1])*2+1~~~(j<i)

意思是先把j个盘子在四柱的情况下移到一个柱上,这个柱就不能动了,剩下的i-j-1的盘子在三柱的情况下移到另一个盘子上。

然后将最后一个盘子用一步移到剩下那一个没有盘的柱上,再把其他两个柱上的所有盘子按照刚才移动的方法移到最后一个盘子所在的柱上即可。

答案只有15位,本来是不用高精度的,g[]可以只用存50几个即可。

时间复杂度O(n)。

Code

#include<cstring>
#include<cstdio>
#include<algorithm>
#include<cstdlib>
#define I int
#define ll long long
#define F(i,a,b) for(I i=a;i<=b;i++)
#define Fd(i,a,b) for(I i=a;i>=b;i--)
#define mem(a,b) memset(a,b,sizeof a)
#define N 1005
#define M 100000
using namespace std;
I n,f[N][N],g[N][N],t[N],mn[N];
void R(I &x){x=0;I w=1;char c=getchar();while(c<'0'||c>'9'){if(c=='-') w=-1;c=getchar();}while(c>='0'&&c<='9'){x=x*10+c-'0';c=getchar();}x*=w;
}
I cmp(){if(mn[0]>t[0]) return 1;if(mn[0]<t[0]) return 0;Fd(l,t[0],1){if(t[l]<mn[l]) return 1;if(t[l]>mn[l]) return 0;}return 0;
}
I main(){freopen("hanoi.in","r",stdin);freopen("hanoi.out","w",stdout);R(n);F(i,1,n){g[i][0]=g[i-1][0];F(j,1,g[i][0]) g[i][j]=g[i-1][j]*2;g[i][1]++;F(j,1,g[i][0]){g[i][j+1]+=g[i][j]/M;g[i][j]%=M;}while(g[i][g[i][0]+1]){g[i][0]++;g[i][g[i][0]+1]+=g[i][g[i][0]]/M;g[i][g[i][0]]%=M;}
//		g[i]=g[i-1]*2+1;mn[0]=1000;
//		mn=1ll<<60;F(j,0,i-1){F(k,1,t[0]) t[k]=0;t[0]=max(f[j][0],g[i-1-j][0]);F(k,1,t[0]){t[k]+=f[j][k]+g[i-1-j][k];t[k+1]+=t[k]/M;t[k]%=M;}while(t[t[0]+1]){t[0]++;t[t[0]+1]+=t[t[0]]/M;t[t[0]]%=M;}//t[i]=f[j]+g[i-1-j];//cmpif(cmp()){F(k,t[0]+1,mn[0]) mn[k]=0;F(k,0,t[0]) mn[k]=t[k];}
//			mn=min(mn,f[j]+g[i-1-j]);}F(j,1,mn[0]) mn[j]*=2;mn[1]++;F(j,1,mn[0]){mn[j+1]+=mn[j]/M;mn[j]%=M;}while(mn[mn[0]+1]){mn[0]++;mn[mn[0]+1]+=mn[mn[0]]/M;mn[mn[0]]%=M;}F(j,0,mn[0]) f[i][j]=mn[j];F(j,0,mn[0]) mn[j]=0;
//		f[i]=mn*2+1;}printf("%d",f[n][f[n][0]]);Fd(i,f[n][0]-1,1) printf("%05d",f[n][i]);return 0;
}
http://www.lbrq.cn/news/1600831.html

相关文章:

  • html网站模版/优化网站排名
  • 给传销产品做网站/西安网
  • 武汉网站建设dw027/线上营销
  • 南京每月做社保明细在哪个网站查/1个百度指数代表多少搜索
  • 建筑网建设通网站作用/武汉seo网站优化技巧
  • h5响应式网站开发成本/种子资源
  • 茂名专业网站制作公司/网站权重如何查询
  • 永康网站优化/怎么进行网络推广
  • 有哪个网站可以做口腔执业助理医师题库/网站优化排名查询
  • 做外贸选取哪个网站/厦门人才网官网招聘
  • 对网站建设培训的建议/成都网站搜索排名优化公司
  • 制作婚恋网站/搜索引擎优化介绍
  • 如何在网站做404页面/第三方营销策划公司有哪些
  • 泰安网站开发公司/怎么进行推广
  • 做论坛网站需要备案/全网营销代理加盟
  • 如何查询网站空间/南宁网络优化seo费用
  • 快站建站教程/携程: 2023年旅行搜索上涨超900%
  • 中文网站开发工具/重庆森林在线观看
  • 外贸视频网站/优化设计答案六年级上册
  • 中企动力定制化官网/网站优化排名怎么做
  • 中企动力邮箱/上海短视频seo优化网站
  • 郑州做的比较好网站公司/网站首页seo关键词布局
  • 天河区建设水务局网站/广州抖音推广公司
  • jsp做的简单的图书馆网站/青岛网站建设公司排名
  • 成都住建局官网查询入口/网站seo搜索引擎优化怎么做
  • 用git 做网站/成都seo培训班
  • pc网站转wap网站/成人英语培训班哪个机构好
  • 建站公司服务费包括哪些/seo兼职怎么收费
  • net网站阿里云主机配置/免费网站java源码大全
  • 网站维护更新/营销策略模板
  • 2.4- WPF中非 UI 线程上安全地更新 UI 控件方法
  • Java开发时出现的问题---语言特性与基础机制陷阱
  • 3.JVM,JRE和JDK的关系是什么
  • SQL注入SQLi-LABS 靶场less39-50详细通关攻略
  • 豆包1.6+PromptPilot实战:构建智能品牌评价情感分类系统的技术探索
  • 波士顿房价预测工具 - XGBoost实现