首页 > 其他分享 >回溯法解工作分配问题

回溯法解工作分配问题

时间:2023-05-01 22:13:00浏览次数:28  
标签:int dfs 工作 回溯 100 分配 法解

#include<iostream>
using namespace std;
int a[100][100], sum = 0, minn = 2147483647, i, j, n;
int b[100];
void dfs(int dep)
{
    int r;
    for (r = 1; r <= n; ++r)//dep表示第几个人,r表示工作
        if (!b[r]) //如果第r件工作没有被选择
        {
            b[r] = 1;
            sum += a[dep][r];//a[dep][r]表示第dep个人做第r个工作的费用
            if (dep == n && sum < minn) //递归出口,如果当前代价更小,进行更新
            {
                minn = sum;
            }
            if (dep != n)
            {
                if (sum < minn)//sum小于min,继续遍历该结点一下部分,否则剪枝(不进行这种分配)
                    dfs(dep + 1);
            }
            sum -= a[dep][r];//回溯一步
            b[r] = 0;
        }
}
int main()
{
    cin >> n; //工作数
    for (i = 1; i <= n; ++i)
        for (j = 1; j <= n; ++j)
            cin >> a[i][j];
    dfs(1);
    cout << minn << endl;
    return 0;
}

 

标签:int,dfs,工作,回溯,100,分配,法解
From: https://www.cnblogs.com/Jocelynn/p/17367087.html

相关文章

  • 分支限界法解01背包问题
    #include<iostream>usingnamespacestd;#defineMAX100structNode{intisVisit;//记录节点是否被扩展doublew;doublev;intlevel;//记录节点所在的层次doubleub;//上界Node*parent;//父节点};doublemaxValue=0;Node*PT[MAX......
  • 分支限界法解TSP问题
    #include<iostream>#include<queue>#defineINF1e7#defineMAX100usingnamespacestd;intm[MAX][MAX];//存储城市间的代价intbestPath[MAX];//存储最优路径intbestCost=1e7;//存储最小代价intcityNumber;//城市数目//排列树的节点定义structNode{......
  • C内存分配
    堆上内存分配1.brk()和sbrk()progambreakprogrambreak记录了堆顶的地址,当使用brk或者sbrk系统调用时,programbreak的位置会随之改变brk()#include<unistd.h>intbrk(void*end_data_segment);brk(void*end_data_segment)将programbreak抬升到end_data_segment处,成......
  • 12 Linux的伙伴系统和SLAB分配器
    伙伴系统: buddy物理内存页面管理算法,最先源自Sun公司的Solaris操作系统;Linux后来也引入了伙伴系统;表示一个物理内存页面:Linux定义了一个page结构体,大量使用了c的union联合体定义结构字段,其大小取决于结构体里面占用内存最大的变量决定;好处是信息量很多,占用内存很少;一个page......
  • 回溯 78.子集 200. 岛屿数量
    回溯算法为什么for循环嵌套很难解决解决问题当问题需要"回头",以此来查找出所有的解的时候排列组合切割(切割字符串)子集把子集列出来棋盘 N皇后/解数独是什么只要有递归,就有回溯也是一种纯暴力搜索算法可以抽象成一个树形结构递归函数没有返回值(ba......
  • Django模板层 (变量分配 过滤器 标签 继承和导入 自定义过滤器、标签及inclusion_ta
    目录一、模板变量分配定义 在后端变量的值通过模板语法传到前端符号{{}}:主要与数据值相关{%%}:主要与逻辑相关模板语法注意点:1.针对需要加括号调用的名字django模板语法会自动加括号调用你只需要写名字就行2.模板语法的注释{##},前端浏览器是无法查看的,因为它要先......
  • 08 内存(下)实现内存页的分配和释放
    初始化完内存页和内存区,接下来就实现分配和释放内存页面;内存页的分配: 内存分配页面接口函数:mm_division_pages,进而调用mm_divpages_fmwk内存分配页面框架函数,此函数先返回对应的内存区结构的指针,然后调用内存分配核心函数mm_divpages_core,返回msadsc_t结构体指针,包含返回......
  • 考研408操作系统-设备的分配与回收
    设备分配时应该考虑的因素设备的分配算法:先来先服务、优先级高者优先、短任务优先...静态分配与动态分配设备分配管理中的数据结构设备分配的步骤设备分配步骤的改进方法总结......
  • 第四章 存储器管理 4.3 连续分配存储管理方式
    一、单一连续分配  内存分为两个区域:系统区,用户区。  应用程序装入到用户区,可使用用户区全部空间。内存中仅驻留一道用户程序,整个用户区为一个用户独占。二、固定分区分配  1.将内存用户空间划分为若干个固定大小的区域,每个区域称为一个分区,在每个分区中只装入......
  • 回溯算法:剑指 Offer 38. 字符串的排列
    题目描述:输入一个字符串,打印出该字符串中字符的所有排列。你可以以任意顺序返回这个字符串数组,但里面不能有重复元素。 限制:1<=s的长度<=8  classSolution{Set<String>res=newHashSet<>();publicString[]permutation(Strings){b......