10月20日 迷之阶梯

题目

分析

      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 }

猜你喜欢

转载自www.cnblogs.com/zjzjzj/p/9860869.html
今日推荐