博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
选择工作 回溯搜索
阅读量:5083 次
发布时间:2019-06-13

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

设有
A
B
C
D
E
五人从事
J1
J2
J3
J4
J5
五项工作,每人只能从事一项,他们的效益如下。

每人选择五项工作中的一项,在各种选择的组合中,找到效益最高的的一种组合输出。
/*相当于将五种工作排列组合,从中挑选出效率最高的*/

#include<iostream>

#include<cstdio>
#include<cstdlib>
#include<iomanip>
using namespace std;
int data[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}};//每个人的工作效率
int maxx=0,g[10],f[10];
bool work[6];//每个工作又没有被选
int search(int,int);
int main()
{
search(1,0);
for(int i=1;i<=5;i++)
{
cout<<char(64+i)<<":J"<<g[i]<<" ";//每个工人干什么工作
}
cout<<"supply:"<<maxx<<endl;//输出效率
return 0;
}
int search(int x,int t)
{
for(int i=1;i<=5;i++)
{
if(!work[i])//第i个工作没有被选
{
f[x]=i;//第x个人选第i个工作
work[i]=1;//工作被选
t+=data[x][i];//效率和增加
if(x==5)
{
if(t>maxx)//选出效率最高的那一个
{
maxx=t;
for(int i=1;i<=5;i++)
{
g[i]=f[i];
}
}
}
else
search(x+1,t);
t-=data[x][i];//回溯
work[i]=0;
}
}
}

转载于:https://www.cnblogs.com/zzyh/p/6609428.html

你可能感兴趣的文章
Python02
查看>>
461. Hamming Distance
查看>>
windows下redis安装
查看>>
团队项目第一阶段冲刺站立会议05
查看>>
Windows Sublime text3 搭建Go语言环境
查看>>
XCode常用快捷键的使用
查看>>
mac 电脑配置cordova
查看>>
自定义view属性动画
查看>>
D - Fliptile
查看>>
我在博客园的日子
查看>>
python type的用法
查看>>
使用 Spring 2.5 基于注解驱动的 Spring MVC
查看>>
[离散时间信号处理学习笔记] 15. 模拟信号的数字处理
查看>>
docker安装
查看>>
HTML基础---表单
查看>>
线程安全单例(用Qt原子指针和模板实现)和单线程单例
查看>>
memcached安装问题
查看>>
雪碧图的使用方法
查看>>
LintCode "Continuous Subarray Sum II"
查看>>
LeetCode "Binary Tree Vertical Order"
查看>>