zoukankan      html  css  js  c++  java
  • 上机实验题7--求解装载问题

    //求解装载问题
    #include<stdio.h>
    #define MAXN 20
    int n,W;
    int maxw;
    int x[MAXN];
    int minm = 32767; 
    void disp(int n){    //当x[i]等于1时,说明选择该集装箱,输出
    	int i;
    	printf("选取的集装箱:
    ");
    	for(i=1;i<=n;i++)
    		if(x[i] == 1)
    			printf("选取第%d个集装箱
    ",i);
    	printf("总重量 = %d
    ",maxw); 
    }
    void Loading(int w[],int tw,int m,int op[],int i){	//考虑第i个集装箱 
    	int j; 
    	if(i>n){  //tw:在考虑第i个集装箱时装入的总重量  op[i]第i个集装箱的装载解向量
    		if(tw <= W && (tw > maxw || (tw == maxw && m < minm))){
    			maxw = tw;    //
    			minm = m;     //
    			for(j = 1;j<= n;j++)
    				x[j] = op[j]; 
    		}
    	}
    	else{
    		op[i] = 1;
    		if(tw + w[i] <= W)  //左剪枝,装载满足条件的集装箱  
    			Loading(w,tw+w[i],m+1,op,i+1);
    		op[i] = 0;
    		if(m <= 2)       //右剪枝,至少选择3个集装箱
    			Loading(w,tw,m,op,i+1);
    	}
    } 
    int main(){
    	int w[] = {0,5,2,6,4,3};
    	int op[MAXN];	//存放临时解 
    	n = 5,W = 10;
    	Loading(w,0,0,op,1);
    	disp(n);
    } 
    

      

  • 相关阅读:
    Java中数组遍历
    数组常见异常
    数组的访问
    Java中数组的定义方式
    Java中数组的概念与特点
    node爬虫技术初探
    node相关内容
    vs code快捷键
    vue 入门开发
    es6 常见用法
  • 原文地址:https://www.cnblogs.com/Hqx-curiosity/p/12153415.html
Copyright © 2011-2022 走看看