题目
分析
Dp
代码
1 #include<iostream> 2 #include<bits/stdc++.h> 3 using namespace std; 4 int h[201]; 5 int f[201]; 6 int main () 7 { 8 memset(f,0x7f,sizeof(f)); 9 int n; 10 cin>>n; 11 for (int i=1;i<=n;i++) 12 cin>>h[i]; 13 f[0]=f[1]=0; 14 f[2]=1; 15 for (int i=2;i<=n;i++) 16 { 17 if (h[i-1]+1==h[i]) 18 f[i]=min(f[i],f[i-1]+1); 19 for (int j=2;j<=i-1;j++) 20 for (int k=1;k<=j-1;k++) 21 { 22 int s=pow(2,k); 23 if (h[j-k]+s>=h[i]) 24 f[i]=min(f[i],f[j]+k+1); 25 } 26 } 27 if (f[n]!=2139062143) 28 cout<<f[n]; 29 else 30 cout<<"-1"; 31 }
原文:https://www.cnblogs.com/zjzjzj/p/9860869.html