简单栈实现背包问题

来源:互联网 发布:js给a标签的href赋值 编辑:程序博客网 时间:2024/06/13 10:27

这篇文章我知道很渣,写出来只是做个记号,下次再去完善。

/*
栈实现简单背包问题
*/

 

#include<iostream>#include <cstdio>#include <cstring>#include <stack>#include <vector>using namespace std;int main(){    int sum,k,i = 0;    stack<int> s;    scanf("%d",&sum);        //容量    int a[] = {4,3,6,2,5,1};    k = sizeof(a)/sizeof(a[0]);    int jilu[20];  // 设置这数组的目的是记住压入栈中原数组的下标,方便以后记录容器的剩余量    int item = 0;    while(!s.empty()||i!=k){        while(i<k&&sum>0){            if(sum-a[i]>=0){                jilu[item++] = i;                s.push(a[i]);                sum-=a[i];            }            i++;        }             if(!sum){            while(!s.empty()){             printf("%d ",s.top());             s.pop();            }           }        else{                s.pop();  i = jilu[item-1]; sum+=a[i]; item--;        }        i++;    }        return 0;}



原创粉丝点击