like


私信TA

用户名:dotcpp0640282

访问量:71

签 名:

等  级
排  名 25081
经  验 553
参赛次数 0
文章发表 2
年  龄 0
在职情况 学生
学  校 双桥第一驾校
专  业

  自我简介:

TA的其他文章

解题思路:自顶而下搜索最小值

注意事项:记录答案防止时间爆炸

参考代码:

#include<bits/stdc++.h>

#define endl '\n'

using namespace std;

typedef long long i64;

typedef int i32;

typedef long double ld;

i64 dp[1200];

int a[11];

i64 like(int n)

{

    if(n==0)

        return 0; //搜索结束边界

    if(n<0)

        return 9999999999999; //小于0返回正无穷

    if(dp[n]<12345643)

        return dp[n];   //搜过了就不用再搜索了

    for(int i=1;i<=10;i++)

        dp[n]=min(dp[n],like(n-i)+a[i]); //比较


    return dp[n];

}


int main()

{

    ios::sync_with_stdio(false);

    cin.tie(nullptr);

    cout.tie(nullptr);

    memset(dp,0xf,sizeof(dp)); //初始化为极大值

    for(int i=1;i<=10;i++)

        cin>>a[i];

    int n;

    cin>>n;

    cout<<like(n);

return 0;

}


 

0.0分

0 人评分

看不懂代码?想转换其他语言的代码? 或者想问其他问题? 试试问问AI编程助手,随时响应你的问题:

编程语言转换

万能编程问答  

代码解释器

代码纠错

SQL生成与解释

  评论区