educoder算法设计与分析 实验六 分支限界法拓展

实验六 分支限界法拓展

  • 第1关:装载问题 (FIFO 优先队列法)
  • 第2关:装载问题 (最优队列法)

第1关:装载问题 (FIFO 优先队列法)

//装载问题 队列式分支限界法求解 

#include "Queue.h"
#include 
using namespace std;
 
int N = 0;
 
template<class Type>
class QNode
{
   
	public:
		QNode *parent;	//指向父节点的指针
		bool LChild;    //左儿子标识
		Type weight;    //节点所相应的载重量
};
 
template<class Type>
void EnQueue(Queue<QNode<Type>*>&Q,Type wt,int i,int n,Type bestw,QNode<Type>*E,QNode<Type> *&bestE,int bestx[],bool ch);
 
template<class Type>
Type MaxLoading(Type w[],Type c,int n,int bestx[]);
 
int main()
{
   
	float c = 0;  
    float w[100] = {
   0};//下标从1开始  
    int x[100];  
	float bestw;
	
	cin>>N;
	cin >>c;
	for(int i=1; i<=N; i++)  
    {
     
        cin>>w[i];  
    }  
    cout<<"Ship load:"<<c<<endl;  
    cout<<"The weight of the goods to be loaded is:"<<endl;  
    for(int i=1; i<=N; i++)  
    {
     
        cout<<w[i]<<" ";  
    }  
    cout<<endl;  
   
    bestw = MaxLoading(w,c,N,x);  
  
    cout<<"Result:"<<endl;  
    for(int i=1; i<=N; i++)  
    {
     
        cout<<x[i]<<" ";  
    }  
    cout<<endl;  
	cout<<"The optimal loading weight is:"<<bestw<<endl;
  
    return 0;  
}
 
//将活节点加入到活节点队列Q中
template<class Type>
void 

你可能感兴趣的:(笔记,算法)