⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 beibao.cpp

📁 背包问题的解决
💻 CPP
字号:
#include"Node.h"
#include"linkedstack.h"
#include"beibao.h"
#include<iostream>

using namespace std;

void beibao::loading(int *w,int T,int &k)
{
	int sum,next,last,out;  
	for(int i=0;i<n;i++)
	{	
		int p;
		while(top)s.Delete(p);
		s.Add(w[i],i);
		sum=w[i];
		next=i+1;
		while(1)
		{
			if(next<=n-1)
			{
				if((sum+w[next])>=T)
				{
					if(sum+w[next]==T)
					{
						s.Add(w[next],next);
						store(s,k);
						next++;
						s.Delete(out);
						
						continue;
					}
					else
					{
						next++;
						continue;
					}
				}
				else
				{
					s.Add(w[next],next);
					last=next;
					next++;
					sum=sum+w[next];
					continue;
				}
			}
			else
			{
				if(top->data==w[i])
				{
					if(i==n-1)
					{
						if(sum==T){store(s,k);break;}
						else break;
					}
					else break;
				}
				else
				{
					int temp;
				s.Delete(out);
				sum=sum-out;

				/*for(int j=0;j<n;j++)
				{
					if(w[j]==s.Top())
					{temp=j;break;}
				}
				next=temp+1;*/
				next=s.last()+1;
				continue;
				}
			}
		}
	}
}

void beibao::store(linkedstack &s,int &k)
{
	int temp;
	int j=0;
	while(top)
	{
		s.Delete(temp);
		cout<<temp<<' ';
		a[j]=temp;
		j++;
	}
	cout<<endl;
	for(int i=j-1;i>=0;i--)
	s.Add(a[i]);
	k++;
	
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -