动态规划uva12563
1 #include <bits/stdc++.h> 2 using namespace std; 3 4 const int maxn = 50+5; 5 int T,n,t,a[maxn],dp[180*maxn]; 6 7 int main(int argc, char const *argv[]) 8 { 9 scanf("%d",&T); 10 for(int cas=1; cas<=T; cas++){ 11 memset(dp,-1,sizeof(dp)); 12 dp[0] = 0; 13 scanf("%d%d",&n,&t); 14 for(int i=1; i<=n; i++) 15 scanf("%d",&a[i]); 16 int MAX = 180*n; 17 for(int i=1; i<=n; i++){ 18 for(int j=MAX; j>=a[i]; j--){ 19 if(dp[j-a[i]] >= 0) 20 dp[j] = max(dp[j],dp[j-a[i]]+1); 21 } 22 } 23 24 int ans = 0,sum = 0; 25 for(int i=0; i<t; i++){ 26 if(dp[i]>=ans){ 27 ans = dp[i]; 28 sum = i; 29 } 30 } 31 32 printf("Case %d: %d %d\n",cas,ans+1,sum+678); 33 } 34 35 return 0; 36 }
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步