首页 > 其他分享 >工作分配问题

工作分配问题

时间:2023-12-10 18:02:03浏览次数:27  
标签:总费用 int sum minCost 问题 工作 book 分配

如题:

思路:

让工作去选人

画出解空间树即可

代码

#include <stdio.h>
#include <limits.h>

int n;
int c[21][21];   //将工作i分配给第j个人的费用为c[i][j]
int minCost = INT_MAX;  //因为要求最小值,所以将minCost初始化为最大整数(int型)
int sum = 0;   // 记录搜索过程中得到的工作费用和
int book[21];   // 用于标记一个人是否已被分配工作:book[i]=0表示没有被分配工作;book[i]=1表示已经被分配工作

void dfs(int t) {
    if (t >= n) {  //已经到达叶子结点,继续判断是否找到了最小总费用
        if (minCost > sum) {  // 没有找到最小总费用
            minCost = sum;  // 更新最小总费用
            return;
        }
    }
    for (int i = 0; i < n; i++) {  //为第工作t安排人

        if (!book[i]) {  // 第i个人还没有被安排工作

            book[i] = 1;  // 将工作t分配给第i个人
            sum += c[t][i];  // 更新总费用

            if (sum < minCost) {  // 如果当前得到的sum小于最小值,就向下搜索子树;否则剪枝
                dfs(t + 1);
            }
            
            book[i] = 0;  // 没有得到比minCost更小的和,回溯
            sum -= c[t][i];
        }
    }
}

int main() {
    scanf("%d", &n);

    for (int i = 0; i < n; i++) {

        for (int j = 0; j < n; j++) {

            scanf("%d", &c[i][j]);
        }

        book[i] = 0;
    }

    dfs(0);

    printf("%d\n", minCost);

    return 0;
}

参考博客:

https://blog.csdn.net/weixin_48937140/article/details/121169372

https://blog.csdn.net/m0_46308522/article/details/110421351

标签:总费用,int,sum,minCost,问题,工作,book,分配
From: https://www.cnblogs.com/kirei7/p/17892990.html

相关文章

  • 通过VS地址擦除系统定位缓冲区溢出问题
    VS2019增加了一个名为“地址擦除系统”的功能,默认是关闭的,可以在项目“属性”-“c/c++”-"常规"中开启。在开启地址擦除系统”功能时,将调试信息格式设置为“程序数据库”。如下图:如果没有该项,检查VS2019的版本是否低于16.9,并且在安装项中是否安装“C++AddressSanitizer”。如下......
  • 在Windows电脑上使用多开工具提升工作效率的方法
    提升工作效率的利器——在Windows电脑上使用多开工具导言:在现代社会,电脑已经成为我们生活和工作中不可或缺的工具。然而,对于一些需要同时处理多个任务的人来说,单一窗口的限制可能会影响工作效率。在这种情况下,多开工具成为一个强大的助手,可以极大地提升工作效率。本文将介绍如何......
  • MDM介绍:6. 有密码方面问题?远程帮您解决!
    “IC、IP、IQ卡,统统告诉我密码!”相信大家都知道这句幽默的台词。密码,如此重要的信息,能随便告诉别人吗?当然不能,也不能随便就忘记了。QQ密码、微信密码、邮箱密码、手机密码、电脑登录密码、各个软件登录密码、银行卡密码、支付宝密码……如此多的密码,而且有的账号不需要时时登录,想......
  • 已删除但未消失的图片(Excel与WPS切换时产生的问题)
    问题:一个完全空的工作簿为何会非常大?问题分析:将工作簿后缀名改成rar,打开..xl/media,可以看到有很多图片,这些图片造成了文件大。进一步的问题:这些图片哪里来的,藏在何处。过程:这是Excel与WPS操作同一工作簿产生的问题。第一步:使用WPS打开工作簿,在其中插入嵌入到单元格的图片第......
  • 去掉杠的问题
    数据前三位保持不变,第一、第二条杠后为两位数,第三、第四条杠后为三位数,原横杠去掉。函数公式解决:=IF(LEN(A2)<4,A2&"",CONCAT(IFNA(TEXT(TEXTSPLIT(A2,"-"),{0,"00","00","000","000"}),"")))使用TextSplit函数,将A列中数据以横杠为分隔符横向拆分。使用......
  • 逻辑视图实验分析及其问题思考
    四实验分析及问题思考对于会员管理系统的实现视图模型实验,以下是对实验过程的分析及问题思考:实验过程分析:在会员管理系统的实现视图模型实验中,我们首先对会员信息、会员关系和会员积分三个子系统进行了独立的设计和开发。然后,通过接口和数据交互将这三个子系统集成在一起,形成......
  • 为什么ESP-idf这个powershell窗口有时会打不开,有人遇到过这个问题吗
    ESP-IDF,全称EspressifIoTDevelopmentFramework,是乐鑫官方的物联网开发框架。它主要适用于ESP32、ESP32-S、ESP32-C和ESP32-H系列SoC的开发。此外,它还基于C/C++语言提供了一个自给自足的软件开发工具包(SDK),为用户在这些平台上开发通用应用程序提供了方便。同时,ESP-IDF支持多种网络......
  • 小程序建立用户与数据的联系问题解决方案
    在小程序中建立用户与数据的联系是一个常见的问题,在本文中提供了一个解决方案。这个解决方案包括几个关键步骤。首先,需要通过用户登录功能实现用户的身份识别,并获取到用户的唯一标识符。接着,需要在后台数据库中创建一个用户表,用于存储用户的基本信息和与之相关联的数据。在这个表中......
  • RISC-V 环境搭建问题----1
    在此记录一下搭建开源Vivado-risc-v项目时所遇到的一些问题本来已经弄好的差不多了,最后一看,下载的别人网盘的,版本落后了,只支持到vivado2022.1....只好重新拉一下最新的,又踩雷无数。1.wls2进行gitclone时连接拒绝原文:Ubuntu20.4WSL2无法访问github终极解决方案_ubuntug......
  • System 2 Attention:可以提高不同LLM问题的推理能力
    推理正在成为大型语言模型(llm)关注的下一个主要领域。尽管llm拥有先进的能力,但大多数llm经常被简单的错误绊倒,显示出他们在推理方面的局限性。这些模型可能会被上下文中的不相关细节所误导,或者受到输入提示中的偏差的影响。而后一种倾向被称为谄媚,也就是说模型会更偏向与输入一致......