
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