동적 기획의 가방 문제 및 출력 가방 구체적 방안
1 #include
2 using namespace std;
3 const int N=20;
4 int n,b;
5 int w[N],v[N],dp[N][N];//dp[i][j] j, i
6 void dpp()
7 {
8 for (int i=0;i<=b;i++)// 0
9 {
10 dp[0][i]=0;
11 }
12 for (int i=0;i<=n;i++)// 0
13 {
14 dp[i][0]=0;
15 }
16 int ans=0,last=0,mi,mj;//mi,mj
17 for (int i=1;i<=n;i++)
18 {
19 for (int j=1;j<=b;j++)
20 {
21 dp[i][j]=dp[i-1][j];
22 if (w[i]<=j)
23 {
24 dp[i][j]=max(dp[i-1][j-w[i]]+v[i],dp[i-1][j]);// i
25 ans=max(ans,dp[i][j]);
26 mi=i;
27 mj=j;
28 }
29 }
30 }
31 cout<<" :"<<endl;
32 cout<endl;
33 stack<int> sa;
34 for (int i=mi,j=mj;i>0;i--)//
35 {
36 if (dp[i][j]==dp[i-1][j-w[i]]+v[i])
37 {
38 sa.push(i);
39 j=j-w[i];
40 }
41 }
42 while (!sa.empty())
43 {
44 cout<<" "<" "<<endl;
45 sa.pop();
46 }
47 }
48 int main ()
49 {
50 // freopen("in.txt","r",stdin);
51 cout<<"input the number of goods:
";
52 cin>>n;
53 cout<<"input the weight of every goods:
";
54 for (int i=1;i<=n;i++)
55 {
56 cin>>w[i];
57 }
58 cout<<"input the value of every goods:
";
59 for (int i=1;i<=n;i++)
60 {
61 cin>>v[i];
62 }
63 cout<<"input the capacity of bag:
";
64 cin>>b;
65 dpp();
66
67 return 0;
68 }
전재 대상:https://www.cnblogs.com/hemeiwolong/p/10125911.html
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.