4 12
10 7 5 1
2
//一维dp
AC代码:
#include <cstdio> #include <iostream> #include <algorithm> #include <cstring> using namespace std ; int dp[100010] ; int t,n ,a ; int main() { while(scanf("%d%d",&n,&t)!=EOF &&(n || t)) { for(int j = 1 ;j<=t ;j++) dp[j] = 1e9; for(int i = 1 ;i<=n ;i++) { scanf("%d",&a) ; for(int j = a ;j<=t ;j++) dp[j] = min(dp[j],dp[j-a]+1) ; } int i; for(i = t; dp[i] >=1e9; i--); cout << dp[i] << endl; } return 0 ; }
原文地址:http://blog.csdn.net/u012566693/article/details/44975821