#include<iostream> using namespace std; #include<algorithm> const int Max_sum=10000; int main() { int a[11]; for(int i=1;i<=10;i++) { cin>>a[i]; } int n; cin>>n; int dp[n+1]; dp[0]=0; for(int i=1;i<=n;i++) { dp[i]=Max_sum; if(i>=10) { for(int j=1;j<=10;j++) { dp[i]=min(dp[i-j]+a[j],dp[i]); } }else{ for(int j=1;j<=10-i;j++) dp[i]=min(dp[i-j]+a[j],dp[i]); } } cout<<dp[n]<<endl; return 0; } 为什么我按照你这思路写得过不了?(测了几组数据都行)