解题思路:自顶而下搜索最小值
注意事项:记录答案防止时间爆炸
参考代码:
#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 人评分
母牛的故事 (C语言代码)浏览:435 |
c primer plus 第十二章 12.1小节浏览:377 |
C语言程序设计教程(第三版)课后习题5.4 (C语言代码)浏览:520 |
C语言程序设计教程(第三版)课后习题7.4 (C语言代码)浏览:1241 |
C语言程序设计教程(第三版)课后习题3.7 (C语言代码)浏览:449 |
C语言程序设计教程(第三版)课后习题10.4 (C语言代码)浏览:535 |
Hello, world! (C语言代码)浏览:714 |
大家好,我是验题君浏览:577 |
核桃的数量 (C语言代码)浏览:872 |
C语言训练-自守数问题 (C语言代码)浏览:742 |