1. 程式人生 > >2016級演算法第三次上機-E.SkyLee狩獵魔物

2016級演算法第三次上機-E.SkyLee狩獵魔物

這道題本質上還是一個完全揹包的問題

需要注意的點還是:

1.要求裝滿首先是講一維初始化問題 至於是正無窮還是負無窮要根據問題而定。

2.min OR max?

#include <iostream>
#include <algorithm>
#include <cstring>

using namespace std;
const int maxlen=1e3 + 10;
const int INF = 0x3f3f3f;
int weight[maxlen];
int value[maxlen];
int dp[maxlen];
int main(){ int i,j,k,n; while(~scanf("%d",&n)){ for(i=1;i<=n;i++){ scanf("%d",&value[i]); weight[i]=i; } memset(dp,INF,sizeof(dp)); dp[0]=0; for(i=1;i<=n;i++) for(j=weight[i];j<=n;j++) dp[j]
=min(dp[j],dp[j-weight[i]]+value[i]); printf("%d\n",dp[n]); } return 0; }
View Code