Ka的回溯编程练习 Part4|分配工作与选书
设有A,B,C,D,E五人从事J1,J2,J3,J4,J5五项工作,每人只能从事一项,他们的效益如下。
每人选择五项工作中的一项,在各种选择的组合中,找到效益最高的的一种组合输出。
这个主要是细节了,没什么难度
1 #include<stdio.h> 2 int MansToJobs[6][6]={{0,0,0,0,0,0},{0,13,11,10,4,7},{0,13,10,10,8,5},{0,5,9,7,7,4},{0,15,12,10,11,5},{0,10,11,8,8,4}}; 3 //以上,前一维代表人名,后一维代表工作量 4 int TheBestResultOfDistribution[6]={0}; //选择时的临时储存 5 int BossWantIt[6]={0}; //最优解的储存 和上面都是下标代表工作序号,内容代表工作者 6 int BestRecord=0,NowadayRecord=0; //工作总量储存:BestRecord是最优解的储存,NowadayRecord是临时储存 7 int search(int n) //第几个人 8 { 9 int i,j; 10 for(i=1;i<=5;i++) //第几个工作 11 { 12 if(TheBestResultOfDistribution[i]==0) //如果此工作没人干 13 { 14 TheBestResultOfDistribution[i]=n; //交给此人 15 NowadayRecord+=MansToJobs[n][i]; //记录工作总情况 16 if(n==5) //如果已经有了5个选择 17 { 18 if(NowadayRecord>BestRecord) //又如果这一次的总工作量大于上一次记录的最多的 19 { 20 BestRecord=NowadayRecord; //替代一下 21 for(j=1;j<=5;j++) 22 BossWantIt[j]=TheBestResultOfDistribution[j]; 23 } 24 } 25 else search(n+1); 26 TheBestResultOfDistribution[i]=0; //恢复现场,这一步别的框架可能不需要,但这个需要 27 NowadayRecord-=MansToJobs[n][i]; 28 } 29 } 30 31 } 32 int main() 33 { 34 int i; 35 search(1); 36 for(i=1;i<=5;i++) //输出没什么好说的了 37 printf("The job:%d give the guy:%d\n",i,BossWantIt[i]); 38 printf("total:%d",BestRecord); 39 return 0; 40 }
同类题目选书
学校放寒假时,信息学竞赛辅导老师有A,B,C,D,E五本书,要分给参加培训的张、王、刘、孙、李五位同学,每人只能选一本书。老师事先让每个人将自己喜欢的书填写在如下的表格中。然后根据他们填写的表来分配书本,希望设计一个程序帮助老师求出所有可能的分配方案,使每个学生都满意。
1 #include <stdio.h> 2 int BookTheyLike[6][6]={{0,0,0,0,0,0},{0,1,0,0,1,0},{0,1,1,0,0,1},{0,0,1,1,0,0},{0,0,0,0,1,0},{0,0,1,0,0,1}}; 3 int Method[6]={0},ThisIsMyBook[6]={0}; 4 int AreTheyAllLikeIt=0; 5 void output() 6 { 7 printf("method:"); 8 int k; 9 for(k=1;k<=5;k++) 10 printf("%d",Method[k]); 11 printf("\n"); 12 } 13 void search(int n) 14 { 15 int i; 16 for(i=1;i<=5;i++) 17 { 18 if(BookTheyLike[n][i]==1)//因为如果不喜欢此本书的话这个解就没有意义了,所以可以先检测一下此书是否喜欢再往下搜索 19 { 20 if(ThisIsMyBook[i]==0) 21 { 22 Method[n]=i; 23 ThisIsMyBook[i]=1; 24 AreTheyAllLikeIt+=BookTheyLike[n][i]; 25 if(AreTheyAllLikeIt==5) output(); 26 else search(n+1); 27 ThisIsMyBook[i]=0; 28 AreTheyAllLikeIt-=BookTheyLike[n][i]; 29 } 30 } 31 } 32 } 33 int main() 34 { 35 search(1); 36 return 0; 37 }
代码和上面的原理差不多,只是多了注释那里,可以省点时间
转载于:https://www.cnblogs.com/KakagouLT/p/4517838.html
Ka的回溯编程练习 Part4|分配工作与选书相关推荐
- Ka的回溯编程练习 Part1|整划什么的。。
1 #include<stdio.h> 2 int search(int s,int t); 3 void op(int k); 4 int res[1001]={1},n; 5 int ...
- Ka的递归编程练习 Part4|Hanoi汉诺塔,双色汉诺塔的也有
1 #include <stdio.h> 2 void hanoi(int s,char a,char b,char c) //a是出发盘,b是中途盘,c是结束盘 3 { 4 if(s== ...
- 你是怎样给下属分配工作
身居管理者位置并不一定会自然产生正确分配工作给别人的能力.事实上,许多管理者常常是非常拙劣的分配者. 现代管理者的一个非常重要的职责就是要把工作分配给别人去做.怎样做到有效的分配呢?美国作者J·W·李 ...
- linnux 流量控制模块tc_可编程控制器PLC基本工作原理(第一颗)
可编程控制器PLC基本工作原理(第一课) 1.硬件结构 2.内部组成(点击关注第二颗) 3.循环扫描 一.中央处理器 1.中央处理器是什么玩意? 中央处理器也称为CPU(Central Process ...
- web安全编程——权限的分配和控制
web安全编程--权限的分配和控制 2009-07-02 15:46 通常权限划分是为了控制数据和功能的使用范围.传统的划分方法一般将用户划分为匿名用户.普通登录用户.管理员用户.我们暂时将以上三 种 ...
- 某公司为本科以上学历的人重新分配工作,分配原则如下。 (1)如果年龄不满18岁,学历是本科,男性要求报考研究生,女性则担任行政工作; (2)如果年龄满18岁不满5o 岁,学历本科,不分男女,任中层领导
软件测试--决策表 10.某公司为本科以上学历的人重新分配工作,分配原则如下. (1)如果年龄不满18岁,学历是本科,男性要求报考研究生,女性则担任行政工作; (2)如果年龄满18岁不满5o 岁,学历 ...
- 学编程能做什么工作 五大行业任你选
在平时跟小伙伴们的交流中,大家问的比较多的一个问题就是:学了编程能干什么? 学泥瓦工可以码砖头.学裁缝能做衣服,这个都有明确的方向.那我们学编程能从事那些工作呢?码农?岂止是码农!而且大家太小看码农了 ...
- L1-030 一帮一 (15分) “一帮一学习小组”是中小学中常见的学习组织方式,老师把学习成绩靠前的学生跟学习成绩靠后的学生排在一组。本题就请你编写程序帮助老师自动完成这个分配工作,即在得到全班学生
L1-030 一帮一 (15分) "一帮一学习小组"是中小学中常见的学习组织方式,老师把学习成绩靠前的学生跟学习成绩靠后的学生排在一组.本题就请你编写程序帮助老师自动完成这个分配工 ...
- “一帮一学习小组”是中小学中常见的学习组织方式,老师把学习成绩靠前的学生跟学习成绩靠后的学生排在一组。本题就请你编写程序帮助老师自动完成这个分配工作,即在得到全班学生的排名后,在当前尚未分组的学生中,
"一帮一学习小组"是中小学中常见的学习组织方式,老师把学习成绩靠前的学生跟学习成绩靠后的学生排在一组.本题就请你编写程序帮助老师自动完成这个分配工作,即在得到全班学生的排名后,在当 ...
- 分配工作时需要考虑的问题
文章试图总结作为一个技术管理者给下属进行工作分配时,需要从哪些方面考虑,以及需要注意的问题.实际上,也可以作为一个下属如何完成上级分配工作的一个指引.就像文章里说到的,我们在分配给别人任务的时候,别人 ...
最新文章
- 一起学微软Power BI系列-使用技巧(3)Power BI安卓手机版安装与体验
- python好吗-Python现在就业前景好吗?
- learn python the hard way习题31~40总结以及列表的扩展知识
- 机械工业出版社之道格·赫尔曼《Python 3标准库》目录
- sql 转html 中文乱码问题,SqlServer中文乱码问题的解决方法
- POJ2942-Knights of the Round Table【tarjan】
- c语言 linker error,[Linker error] undefined reference to `prinf'的问题!
- python3 unicodeencodeerror_解决 Python3 下 print 时出现 UnicodeEncodeError 的问题
- webpack4升级指南
- Django学习笔记5-url
- oracle之 监听器无法启动的几个原因总结
- 深入 AI 之前,你需要学习的服务与框架
- 会员数据化运营应用场景与分析模型
- 增大图片(在图像分割、GAN、超分辨中经常用到)
- 依图科技(北京)计算机视觉算法实习生面经-2020年10月
- eclipse中的servers不见了解决方法
- Loki告警的正确姿势
- 【DFT】DFT入门介绍
- Ubuntu安装Elasticsearch集群及Kibana
- vfp报表纸张设置_vfp9终结一直以来的打印纸张设置
热门文章
- 【LeetCode】【字符串】题号:*423. 从英文中重建数字
- 【xpath】多个xpath Element对象,提取结果是一样的
- 《机器学习Python实践》第5章——数据导入
- [转载]stl之string类用法详细总结
- 机器学习第六回(完结篇)
- Android GC机制介绍
- Solr服务器搭建与简单使用
- Apache Flink Meetup · 北京站,1.13 新版本 x 互娱实践分享的开发者盛筵!
- 帧同步分离逻辑层和渲染层_帧同步如何分离逻辑和渲染?
- c语言程序设计教程 郭浩志,C语言程序设计教程答案杨路明郭浩志.doc