这道题应该仔细读题啊!!!题应经告诉你状态转移方程,我做这道题的时候就不淡定了,看的结题报告,在重新读题的时候豁然开朗
废话不多说,先将n-k个用四个柱从a移到b,再将剩余的k用三个柱从a移到d,再用四个柱把n-k从b移到d,至于k的大小需要建立一个状态方程看看口味多大事,所用时间最小
#include<iostream>
using namespace std;
int h3[15],h4[15];//表示3个柱,和四个柱
int main()
{
int n;
n=12;
h3[1]=1;
cout<<'1'<<endl;
for(int i=2;i<=12;i++)
h3[i]=2*h3[i-1]+1;//初始化三个柱
for(int i=1;i<=11;i++)
{
h4[i]=2+h3[i];
for(int j=1;j<i;j++)
{
if(h4[i]>2*h4[j]+h3[i-j])
h4[i]=2*h4[j]+h3[i-j]; //仔细读题的公式
}
cout<<h4[i]<<endl;
}
// system("pause");
return 0;
}