博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
关于回溯与招聘市场
阅读量:5360 次
发布时间:2019-06-15

本文共 1509 字,大约阅读时间需要 5 分钟。

  招聘市场有几份工作,交由A、B、C、D、F个人来完成,他们完成每份工作的效率各不相同:

  求五份工作的总效率最高的分配方式。

  那么,肯定又是回溯了。

  先试着分配工作,记录下总效率和分配方式,如果找到更高效率的分配方式,则替换,遍历所有方式后,输出最后一次保存的解。简单来说就是这样了。那么我们来看代码:

1  1 #include
2 2 int sum=0,t=0;//sum为最终解的效率,t为临时解的效率 3 3 int prod[5][5]={
{
13,11,10,4,7}/*FirstMan*/, 4 4 {
13,10,10,8,5}/*SecondMan*/, 5 5 {
5,9,7,7,4}/*ThirdMan*/, 6 6 {
15,12,10,11,5}/*ForthMan*/, 7 7 {
10,11,8,8,4}/*FifthMan*/};//储存各人的工作效率 8 8 int temp[5]={
0};//临时的分配方式 9 9 int ans[5]={
0};//最终解10 10 int job[5]={
0};//标记该工作是否已被分配出去11 11 void cygp();//此函数用于临时解与最终解的替换12 12 void f(int k);13 13 int main()14 14 {15 15 int i;16 16 f(0);17 17 for(i=0;i<=4;i++)18 18 printf("%d:%d ",i+1,ans[i]+1);19 19 printf("%d\n",sum);20 20 return 0;21 21 } 22 22 void f(int k)23 23 {24 24 int i;25 25 for(i=0;i<=4;i++)26 26 {27 27 if(job[i]==0)28 28 {29 29 t+=prod[k][i];30 30 temp[k]=i;31 31 job[i]=1;32 32 if( (k==4) && (t>sum) )//若临时分配方式效率更高33 33 {34 34 sum=t;35 35 cygp();//将临时分配方式转成正式解36 36 }37 37 else38 38 f(k+1);39 39 job[i]=0;40 40 t-=prod[k][i];41 41 }42 42 }43 43 }44 44 void cygp()45 45 {46 46 int i;47 47 for(i=0;i<=4;i++)48 48 ans[i]=temp[i];49 49 }
View Code

  代码有不足的,欢迎指教!

转载于:https://www.cnblogs.com/LegendLa/p/4524666.html

你可能感兴趣的文章
HAL层三类函数及其作用
查看>>
web@h,c小总结
查看>>
java编程思想笔记(一)——面向对象导论
查看>>
Data Structure 基本概念
查看>>
Ubuntu改坏sudoers后无法使用sudo的解决办法
查看>>
NEYC 2017 游记
查看>>
[搬运] 写给 C# 开发人员的函数式编程
查看>>
Python之旅Day14 JQuery部分
查看>>
core--线程池
查看>>
redux-effect
查看>>
他山之石:加载图片的一个小问题
查看>>
shell - 常识
查看>>
linux下编译复数类型引发的错误:expected unqualified-id before '(' token
查看>>
Spring Cloud Stream消费失败后的处理策略(三):使用DLQ队列(RabbitMQ)
查看>>
PKUWC2018 5/6
查看>>
As-If-Serial 理解
查看>>
洛谷P1005 矩阵取数游戏
查看>>
在Silverlight中使用HierarchicalDataTemplate为TreeView实现递归树状结构
查看>>
无线通信基础(一):无线网络演进
查看>>
关于python中带下划线的变量和函数 的意义
查看>>