HNU-算法设计与分析-作业9-最优装载问题【回溯】(2021级)

1.画解空间树

2.回溯算法的基本思想

3.剪枝策略

附:程序 

#include <bits/stdc++.h>
using namespace std;
int n; //集装箱数
int cw; // 当前载重量, current weight
int bestw; //最优载重重量
int r;  //剩余集装箱重量
int c1; //第一艘轮船的载重量
int c2; //第二艘轮船的载重量
int x[100]; //当前解
int bestx[100]; //当前最优解
int w[100]; //集装箱重量数组
void OutPut()
{
    int restweight = 0;
    for(int i = 1; i <= n; ++i)
        if(bestx[i] == 0)
           restweight += w[i];
    if(restweight > c2)
        cout<<"不能装入"<<endl;
    else
    {
        cout<<"船1装入的货物为:";
        for(int i = 1; i <= n; ++i)
            if(bestx[i] == 1)
               cout<<" "<<i;
        cout<<endl<<"船2装入的货物为:";
        for(int i = 1; i <= n; ++i)
            if(bestx[i] != 1)
               cout<<" "<<i;

    }
}
void BackTrack(int i)
{
    if(i > n)
    {
        if(cw > bestw)
        {
            for(int i = 1; i <= n; ++i)
                bestx[i] = x[i];
            bestw = cw;
        }
        return;
    }
    r -= w[i];
    if(cw + w[i] <= c1) //约束条件
    {
    	cout<<"i= "<<i<<" 进入左子树cw + w[i] <= c1"<<endl; 
        cw += w[i];
        x[i] = 1;
        BackTrack(i + 1);
        x[i] = 0;
        cw -= w[i];
    }
    if(cw + r >bestw) //限界函数
    {
        x[i] = 0;
        cout<<"i= "<<i<<" 进入右子树cw + r > bestw"<<endl; 
        BackTrack(i + 1);
    }
    r += w[i];

}
void Initialize()
{
    bestw = 0;
    r = 0;
    cw = 0;
    for(int i = 1; i <= n; ++i)
        r += w[i];
}
void InPut()
{
    cout<<"请输入箱子个数:";
    cin>>n;

    cout<<"请输入两艘船的最大载重量:";
    cin>>c1>>c2;

    cout<<"请输入箱子的重量:";
    for(int i = 1; i <= n; ++i)
       cin>>w[i];

}
int main()
{
    InPut();
    Initialize();
    BackTrack(1);
    OutPut();
}

### 关于湖南大学算法设计分析课程资源 对于希望获取湖南大学(HNU算法设计分析课程相关资料的学生而言,可以考虑多种途径来获得所需的学习材料。通常情况下,高校内部会提供官方的教学大纲、讲义以及推荐书籍给注册学生访问[^1]。 #### 官方渠道 - **学校官网**:许多大学会在其官方网站上公布各科目的教学计划和参考资料链接。建议直接浏览湖南大学计算机学院或相应院系网页寻找最新发布的课程信息。 - **在线学习平台**:部分院校可能通过特定的在线教育服务平台分发电子版课件和其他辅助工具。如果存在这样的安排,则需登录指定系统查看是否有权限下载相关内容。 #### 社区分享 除了正式出版物外,在互联网社区中也经常能看到由前任选修过该门学科的同学上传的经验贴子或是笔记文档。这些非官方来源虽然质量参差不齐,但对于自学来说仍然是宝贵的信息源之一。 ```python import requests from bs4 import BeautifulSoup def fetch_hnu_course_materials(): url = "https://www.hnu.edu.cn/" # 假设这是湖南大学主页URL response = requests.get(url) soup = BeautifulSoup(response.text, &#39;html.parser&#39;) course_links = [] for link in soup.find_all(&#39;a&#39;): href = link.get(&#39;href&#39;) if &#39;algorithm&#39; in str(href).lower() or &#39;design and analysis&#39; in str(href).lower(): course_links.append(link) return course_links ``` 此段Python代码展示了如何利用`requests`库抓取网页并解析HTML结构以定位潜在有用的链接;实际应用时应调整目标网址及关键词匹配逻辑适应具体情况。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值