UVA 624 CD

来源:互联网 发布:c语言用什么软件编写好 编辑:程序博客网 时间:2024/05/20 11:24

题目链接:点击打开链接

01背包,也是很水,模板

不过有个难点就是他还要记录,所以用一个数组记录一下

第一次写这样的题......

#include<iostream>#include<cstdio>#include<cstring>#include<stack>#include<algorithm>using namespace std;int dp[1010];int num[1010];int book[1010][1010];int main(){//freopen("in.txt","r",stdin);int n,track;while(cin>>n>>track){memset(dp,0,sizeof(dp));memset(book,0,sizeof(book));for(int i=1;i<=track;i++) scanf("%d",&num[i]);for(int i=1;i<=track;i++){for(int j=n;j>=num[i];j--){if(dp[j]<dp[j-num[i]]+num[i]){dp[j]=dp[j-num[i]]+num[i];book[i][j]=1;}else book[i][j]=0;}}int m=n;stack<int> st;for(int i=n;i>=1;i--){if(book[i][m]){st.push(num[i]);m-=num[i];}}while(!st.empty()){cout<<st.top()<<' ';st.pop();}cout<<"sum:"<<dp[n]<<endl;}}


原创粉丝点击