搜索算法

发布时间:2025-05-14 10:51

掌握算法:如排序和搜索算法 #生活技巧# #工作学习技巧# #编程学习路径#

搜索算法------工作分配问题

最新推荐文章于 2023-07-04 10:03:39 发布

Eider1998 于 2019-11-22 11:10:58 发布

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

工作分配问题

Time Limit: 1000 ms Memory Limit: 65536 KiB

Problem Description

设有n件工作分配给n个人。将工作i分配给第j个人所需的费用为 cij。试设计一个算法,为每一个人都分配1 件不同的工作,并使总费用达到最小。
设计一个算法,对于给定的工作费用,计算最佳工作分配方案,使总费用达到最小。

Input

输入数据的第一行有1 个正整数n (1≤n≤20)。接下来的n行,每行n个数,表示工作费用。

Output

将计算出的最小总费用输出。

Sample Input

3

10 2 3

2 3 4

3 4 5

Sample Output

9

Hint

Source

#include<bits/stdc++.h>

using namespace std;

int n;

int m;

int vis[21] = {0};//初始化

int c[101][101];

void dfs(int i, int cnt) //就退出当前递归

{

if(m < cnt)//如果这次递归来的费用大于了m(通过这么多次递归找到的最少费用)

{

return ;

}

if(i == n + 1)

{

m = min(cnt, m);

return ;

}

int j;

for(j = 1; j <= n; j++)

{

if(!vis[j])//如果第j个工作还没有人

{

vis[j] = 1;//假设这项工作分给了这个人

dfs(i + 1, cnt + c[i][j]);//递归看下一项工作分配

vis[j] = 0;//递归完毕之后,取消当前工作分配模式

}

}

}

int main(void)

{

int i;

int j;

cin >> n;

for(i = 1; i <= n; i++)

{

for(j = 1; j <= n; j++)

{

cin >> c[i][j];

}

}

m = 999999;

dfs(1, 0);//深度优先搜索,依次查看每项工作分给不同的人的情况

printf("%d\n", m);//输出最小的总工作费用

return 0;

}

网址:搜索算法 https://www.yuejiaxmz.com/news/view/967415

相关内容

互联网搜索引擎搜索策略和算法的研究
饿了么为啥给你推荐这个?本地生活搜索算法解密
电脑搜狗输入法计算使用技巧(搜狗手机输入法键盘计算器)
SEO搜索优化方法
基于麻雀搜索算法的线性规划问题求解matlab程序
个性化推荐算法系统、搜索引擎、机器学习AI系统架构设计
开搜AI搜索深度分析报告
搜索结果搜索结果:如何通过精准搜索提升工作效率与生活品质
淘宝搜索排名规则以及针对淘宝搜索的优化方法
搜搜日常搜索直达 便捷生活新入口

随便看看