免费网站建设代理,国内做网站的公司有哪些,余姚公司建设网站,上海知名网站楼梯
jzoj 1520
题目大意#xff1a;
有n个楼梯#xff0c;跳跃高度初始值是1#xff0c;当往后一层时#xff0c;跳跃高度就2#xff0c;当跳跃只能跳跃到当前能跳到楼梯#xff0c;且跳跃之后#xff0c;跳跃高度变回1#xff0c;问跳到第n层最少花几步
样例输入…楼梯
jzoj 1520
题目大意
有n个楼梯跳跃高度初始值是1当往后一层时跳跃高度就×2当跳跃只能跳跃到当前能跳到楼梯且跳跃之后跳跃高度变回1问跳到第n层最少花几步
样例输入
5
0 1 2 3 6样例输出
7数据范围限制
2 N楼层数 50 0 H[i] 楼层高度 1000000000
提示 提示
对于30%的数据N 10。
解题思路
枚举每一步从哪里开始退后几步跳到哪里然后直接DP就行了
代码
#includecstdio
#includecstring
#includeiostream
#define ll long long
using namespace std;
ll n,a[60],f[60];
int main()
{scanf(%lld,n);for (ll i1;in;i)scanf(%lld,a[i]);memset(f,0x7f,sizeof(f));f[1]0;for (ll i1;in;i)//枚举出发点for (ll j0;i-j0;j)//退后步数for (ll ki1;kn;k)//终点if (a[i-j](1j)a[k])//判断f[k]min(f[i]j1,f[k]);//jumpif (f[n]f[0]) printf(-1);else printf(%lld,f[n]);
}