暴力/蛮力法经典例题--求解任务分配问题--C语言

【算法】任务分配问题(蛮力+回溯+分支限界) C++实现 一、简单算法 最简单的算法是:蛮力法,这里采用增量穷举法求出所有的分配方案ps,再计算出每种方案的成本,比较求出最小成本的方案,即最优方案。 1)实现代码 #include<iostream> #include<vector> using namespace std; #define INF 9999 //最大成本值 #define MAXN 21 int n; int c[MAXN][MAXN]; vector<vector<int>> ps; voi 阅读详情

问题描述:

        有n(>=1)个任务需要分配给n个人执行,每个任务职能分配给一个人,每个人只能执行一个任务,每个人完成各个任务对应的消耗如下表,求最小的分配方案。

                         

 解法:

        暴力枚举出所有可能的排列,一共4个人4个项目,如排列1234,第一个数字代表人员1选了任务1,第二个数字代表人员2选了任务2,即下标表示人员,内容表示当前人员选择的任务。

        全排列利用之前的增量枚举法,借助二维vector存储所有可能排序。

代码:

#include<stdio.h>
#include<iostream>
#include<vector>
using namespace std;
#define max 10
#define mixum 999
void insert(vector<int> t, int n,vector<vector<int>>&tem) {
	vector<int> tt;
	vector<int>::iterator it;
	for (int i = 0; i < n; i++) {
		tt = t;
		it = tt.begin() + i;
		tt.insert(it, n);
		tem.push_back(tt);
	}
}
void full_perm(vector<vector<int>>& ps, int n) {
	vector<vector<int>>tem;
	vector<int>s;
	s.push_back(1);
	ps.push_back(s);
	vector<vector<int>>::iterator it;
	for (int i = 2; i <= n; i++) {
		tem.clear();
		for (it = ps.begin(); it != ps.end(); it++) {
			insert(*it, i, tem);
		}
		ps = tem;
	}
}
void dis(vector<vector<int>>vc) {
	vector<vector<int>>::iterator it;
	vector<int>::iterator init;
	for (it = vc.begin(); it != vc.end(); it++) {
		for (init = (*it).begin(); init != (*it).end(); init++) {
			cout << *init << " ";
		}
		cout << endl;
	}
}
void find_best(vector<vector<int>>vc, int n, int cost[max][max]) {
	vector<vector<int>>::iterator it;
	vector<int>::iterator init;
	int min_cost = 99;
	for (it = vc.begin(); it != vc.end(); it++) {
		int each_cost = 0;
		int i = 0;
		for (init = (*it).begin(); init != (*it).end(); init++) {
			each_cost += cost[i++][*init - 1];
		}
		if (each_cost < min_cost)
			min_cost = each_cost;
		cout << each_cost << endl;
	}
	cout << "最小的消耗选择是:" << min_cost;
}
int main() {
	int cost[max][max] = { {9,2,7,8},{6,4,3,7},{5,8,1,8},{7,6,9,4} };
	int n = 4;
	vector<vector<int>>ps;
	full_perm(ps, n);
	dis(ps);
	find_best(ps, n, cost);
	return 0;
}

【swjtu】算法实验3.3穷举法解决任务分配问题 有n(n>=1)个任务需要分配给n个人执行,每个任务只能分配给 一个人,每个人只能执行一个任务,第i个人执行第j个任务的成本是(1 阅读详情

相关推荐

大数据之父_BIM先驱Charles (Chuck) M. Eastman逝世——致敬“BIM之父”

原标题:BIM先驱Charles (Chuck) M. Eastman逝世——致敬“BIM之父”BIM研究的先驱、佐治亚理工教授Charles (Chuck) M. Eastman于本周一(11月9日)在其Atlanta家中逝世。特转韩国Yonsei大学Ghang Lee教授的讣文以作纪念。过世原因未说明。BIM的出现是与当今时代科技的发展分不开的。在信息时代建筑发展面临的挑战巨大:建筑物越建越高...

weixin_39941262的博客 3302

蛮力法/任务分配

任务分配问题是一个全排列问题,先求全排列,再求最小成本任务分配方式

求道问术 1438

边缘计算【智能+安全检测】系列教程--使用OpenCV+GStreamer实现真正的硬解码,完全消除马赛克

通过现有博客的GStreamer的解码方式解码,大多情况应该存在上图马赛克的问题,请勿紧张,其实上述url并没有调用硬件解码,后面有调用硬件解码的ULR,我们来在接下来的介绍中释获。通过RTSP协议连接海康威视摄像头将图片送入AI推理,发现OpenCV的VideoCapture使用的是软解码大量消耗了cpu的资源,并无法做到实时数据处理存在5秒钟的延时。只能把解码这部分送到硬件解码器去处理分摊掉cpu的压力,

Starry-SkyJing的博客 2427

分配问题 --- 蛮力法

分配问题 --- 蛮力法问题描述蛮力法 问题描述 假设有n个任务需要分配给n个人执行,每个任务只分配给一个人,每个人只分配一个任务,且第j个任务分配给第i个人的成本是C[i, j](1≤i , j≤n),任务分配问题要求找出总成本最小的分配方案。 蛮力法 思路: 通过递归遍历所有方案,找到成本最小的那个方案。 //分配问题:蛮力法 #include <iostream> #inclu...

来日浅谈的博客 5035

基于Cadence IC617的共源级放大器设计:从直流到交流的virtuoso仿真实践

本文详细介绍了使用Cadence IC617的Virtuoso平台进行共源级放大器设计的完整仿真流程。从电路图绘制、直流工作点分析,到负载电阻RD的参数扫描及其对增益和带宽的影响,再到交流小信号频率响应仿真,提供了从理论到实践的全面指导,帮助初学者掌握模拟集成电路设计的核心仿真技能。

jj890的博客 480

高通QCS2290 SecureBoot全流程实战:从密钥生成到NON-HLOS.bin生成

本文详细拆解了高通QCS2290平台SecureBoot安全启动技术的端到端实战流程。从开发环境搭建、RSA密钥对生成与证书链构建,到关键XML配置文件修改、固件编译与数字签名,最终完成NON-HLOS.bin集成打包,为嵌入式开发者提供了一份清晰、可操作的安全启动部署指南。

weixin_28273593的博客 299

蛮力法(03组合问题)任务分配问题

任务分配问题

weixin_45939614的博客 723

5G移动性管理实战:手把手教你配置NR小区重选参数(附避坑指南)

本文深入解析5G网络移动性管理中的小区重选参数配置实战。通过拆解小区选择与重选的核心机制,结合真实案例,手把手指导如何配置NR小区重选参数,并分享常见避坑指南,帮助工程师优化网络性能,提升用户移动体验。

weixin_29229261的博客 200

蛮力法解决任务分配问题

问题描述:假设有n个任务需要分配给n个人执行,每个任务只分配给一个人,每个人只分配一个任务,且第j个任务分配给第i个人的成本是C[i, j](1≤i , j≤n),任务分配问题要求找出总成本最小的分配方案。 可以用一个 n 元组(j1, j2, …, jn)来描述任务分配问题的一个可能解,其中第 i 个分量ji(1≤i≤n)表示在第 i 行中选择的列号,因此用蛮力法解决任务分配问题要求生成整...

Geek_sun的博客 1万+

Android AI Agent集成实战:架构设计与自动化技能开发

AI Agent(人工智能代理)是一种能够感知环境、自主规划并执行任务以达成目标的软件实体。其核心原理在于结合大语言模型的推理能力与工具调用(Tool Calling)技术,使应用从被动响应转向主动服务。在移动开发领域,这项技术的价值在于为应用注入“智能大脑”,实现跨应用自动化与个性化交互,从而显著提升用户体验和操作效率。具体到Android平台,其应用场景广泛,例如自动填写表单、智能聊天辅助、个性化工作流优化等。本文聚焦于Android AI Agent的工程化落地,深入探讨了如何利用Accessibil

weixin_42636895的博客 664

从零开始理解Linux中断架构(1)-前言

前段时间在转行手撸WIFI路由器,搞wifi路由器需要理解网络驱动程序,以太网卡驱动程序,无线WIFI驱动程序,而网卡驱动的关键路径就在中断程序中,需要了解NIC设备驱动程序如何收发数据,为了彻底的知道数据包是如何二层传递上来的,又需要了解一点Linux中断系统。第一次看到这张表是无感的,大概能够看懂的就是那个中断次数,因为不停的cat,这个数值会一直不停的增加。第一列是逻辑中断号,第二三列是中断次数,第四列是中断控制器的名字,第五列是硬件中断号,第六列 中断类型,第七列是 中断源关联设备。

maxleng的专栏 881

任务分配问题,蛮力法解决,详细解读,C/C++语言

蛮力法解决全排列问题,详细解读,C语言,C++实现

m0_62330079的博客 2128

YOLO11改进策略【独家融合改进】| RCSOSA + SPD + WFU

SPD-Conv是一种新的 CNN 构建模块,用于替代传统 CNN 架构中使用的步长卷积(strided convolution)和池化(pooling)层,它由空间到深度(Space-to-depth,SPD)层和非步长卷积(non - strided convolution)层组成。WFU模块通过小波变换的频率分解与跨尺度融合机制,解决了传统上采样过程中的混叠和细节丢失问题,实现了高效、高保真的面部细节重建。

Limiiiing的博客 450

回溯法-任务分配问题-c语言

通过将问题进行适当的转化,得出解空间树为排列树,这棵树每条完整路径都代表了一种解的可能。通过深度优先搜索这棵树,枚举每种可能的解的情况,找出能得到最小的花费结果。有n(n≥1)个任务需要分配给n个人执行,每个任务只能分配给一个人,每个人只能执行一个任务。第i个人执行第j个任务的成本是c[i][j](1≤i,j≤n)。(3)以深度优先的方式搜索解空间树,并在搜索的过程中可以采用减枝函数来避免无效搜索。(1)针对给定的问题确定问题的解空间树,问题的解空间树应至少包含问题的一个解或者最优解。

qq_74152953的博客 1067

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

回溯法经典例题--任务分配问题--C语言

问题描述: 有n个任务需要分配给n个人执行,每个任务只能分配给一个人,每个人只能执行一个任务,第i个人执行第j个任务的成本是c【i】【j】。求出总成本最小的一种方案。

MaxDeCookies的博客 3945

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

回溯法求解任务分配问题

问题描述 有n(n≥1)个任务需要分配给n个人执行,每个任务只能分配给一个人,每个人只能执行一个任务。 第i个人执行第j个任务的成本是c[i][j](1≤i,j≤n)。求出总成本最小的分配方案。 问题求解 这里采用回溯法求解。问题表示如下: int n=4; int c[MAXN][MAXN]={{0},{0,9,2,7,8},{0,6,4,3,7}, {0,...

LixDemon的博客 4544

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

任务分配——回溯法

有n个任务需要分配给n个人执行,每个任务只能分配给一个人,每个人只能执行一个任务,第i个人执行第j个任务的成本是c[i][j](1<=i,j<=n)。求出总成本最小的一种方案。 思路:解空间为子集树,用回溯法(dfs)搜索所有方案取最优解 //解空间为子集树 #include<iostream> #include<cstring> using namesp...

长夜漫漫,无心睡眠 5571

4.2.8求解任务分配问题

1. 问题描述 有n(n≥1)个任务需要分配给n个人执行,每个任务只能分配给一个人,每个人只能执行一个任务 2. 解题思路 将成本数组c的下标(加一后)(及对应的任务号码)进行全排列 #include <bits/stdc++.h> using namespace std; #define INF 99999 // 最大成本值 #define MAXN 21 // 问题表...

qq_43192537的博客 4815

蛮力法求解任务分配问题

问题描述 有n(n≥1)个任务需要分配给n个人执行,每个任务只能分配给一个人,每个人只能执行一个任务。 第i个人执行第j个任务的成本是c[i][j](1≤i,j≤n)。求出总成本最小的分配方案。 问题求解 所谓一种分配方案就是由第i个人执行第j个任务,用(a1,a2,…,an)表示,即第1个人执行第a1个任务,第2个人执行第a2个任务,以此类推。全部的分配方案恰好是1~n的全排列。 这里采用增量穷...

LixDemon的博客 4572

网络上搜集的面试题

/*   假设需要将N个任务分配给N个工人同时去完成,每个人都能承担这N个任务,但费用不   同.下面的程序用回溯法计算总费用最小的一种工作分配方案,在该方案中,为每个人分配   1个不同的任务.   程序中,N个任务从0开始依次编号,N个工人也从0开始依次编号,主要的变量说明如下:   c[i][j]:将任务i分配给工人j的费用;   task[i]:值为0表示任务i未分配,值为j表

he_haiqiang的专栏 7306

算法设计与分析——任务分配问题

【问题描述】假设有n个任务需要分配给n个人执行,每个人只执行一个任务,每个任务只由一个人执行。第i个人执行第j个任务的成本是Cij(1<=i,j<=n),求解初最小成本的分配方案。 【基本算法思想】暴力法:用矩阵表示任务分配问题,矩阵元素Cij(1<=i,j<=n)表示人员i执行任务j的成本。任务分配问题转化为,在矩阵中的每一行选取一个元素,这些元素分别属于不同的列,且使之和最小。用一个n元组(j1

fanleehao的博客 1万+

分枝限界法求解任务分配问题

问题描述 有n(n≥1)个任务需要分配给n个人执行,每个任务只能分配给一个人,每个人只能执行一个任务。 第i个人执行第j个任务的成本是c[i][j](1≤i,j≤n)。求出总成本最小的分配方案。 问题求解 这里采用优先队列式分枝限界法求解。 任务和人员的编号均为1~n,解空间每一层对应一个人员的分配。 根结点对应人员0(虚结点),依次为人员1、2、…、n分配任务。 叶子结点对应人员n。 解向量为...

LixDemon的博客 6295

任务分配问题基于深度优先遍历的C++实现算法

1 课程设计题目与要求 1.1设计题目:任务分配问题 1.2设计要求: 问题描述: //有N个任务需要分配给n个人执行,一个任务对应一个人(意思是说,每个任务只分配给一个人,每个人只分配一个任务) //对于每一对i,j=1,2,3......n来说,将j个任务分配给第i个人的成本是C[I,J];找出总成本最小的分配方案 2 总体设计 3 详细设计 3.1数据结构...

W_Y的博客 3231

C++每日一练:任务分配问题(详解)

今天这题比较有意思,排序算法还是比较有用的,显然选择排序在这里很容易实现。提示:以下是本篇文章正文内容,下面案例可供参考这题对练习掌握选择排序还是很不错的。可惜C++这么冷门的吗?发现笔者其它乱七八糟的内容还有人看,正经写点C++的反而没人看了…阅读数几周了都还是个位数!或者改用python3来解题会不会看的人多些?C/C++还是很好的语言,学会了以后可以说:天下就没有看着不眼熟的代码!也可能是笔者这万金油啥都不精,写得太烂了吧。

攻城狮的博客 1832

算法设计与分析------蛮力法

算法设计与分析------蛮力法(c++) 一、蛮力法(穷举法 枚举法) 1、定义 ​ 蛮力法是一种简单直接地解决问题的方法,通常直接基于问题的描述和所涉及的概念定义,找出所有可能的解。 然后选择其中的一种或多种解,若该解不可行则试探下一种可能的解。 2、蛮力法使用情况 索所有的解空间:问题的解存在于规模不大的解空间中。 索所有的路径:这类问题中不同的路径对应不同的解。 直接计算:按照基于问题的描述和所涉及的概念定义,直接进行计算。往往是一些简单的题,不需要算法技巧的。 拟和仿真:按照

唯一的博客 9662

任务分配(分支限界法)

问题描述 假设有n个任务需要分配给n个人执行,每个人只执行一个任务,每个任务只由一个人执行。第i个人执行第j个任务的成本是Cij(1<=i,j<=n), 求解初最小成本的分配方案。 下面这个表格就是代表成本 人员 任务1 任务2 任务3 任务4 1 9 2 7 8 2 6 4 3 7 3 5 8 1 8 4 7 6 9 4 优先队列的分支限界法:就是对小

lxy99的博客 6356
上一篇: 暴力/蛮力法经典例题--全排列问题--C语言
下一篇: 暴力/蛮力法经典例题--图的深度优先--C语言
Max饼干碎
博客等级 码龄5年 28粉丝 19原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值