提交时间:2023-01-14 15:57:33

运行 ID: 67575

#include<bits/stdc++.h> using namespace std; long long dp[10000]={0},yuan[11]; int n; int kk(int res,int nb){ if(nb==1&&res!=0){ if(dp[0]==0) dp[0]=dp[res]+yuan[1]*res; else dp[0]=min(dp[0],dp[res]+yuan[1]*res); kk(0,0); } if(res==0) return 0; for(int i=0;i<=res/nb;i++){ if(dp[res-nb*i]==0) dp[res-nb*i]=dp[res]+yuan[nb]*i; else dp[res-nb*i]=min(dp[res-nb*i],dp[res]+yuan[nb]*i); kk(res-nb*i,nb-1); } } int main(){ for(int i=1;i<=10;i++){ cin>>yuan[i]; } cin>>n; kk(n,10); cout<<dp[0]<<endl; }