poj 1958 Strange Towers of Hanoi dp,需要仔细读题

这道题应该仔细读题啊!!!题应经告诉你状态转移方程,我做这道题的时候就不淡定了,看的结题报告,在重新读题的时候豁然开朗

废话不多说,先将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;
}
 
 
 
 
 

你可能感兴趣的:(poj 1958 Strange Towers of Hanoi dp,需要仔细读题)