zoukankan      html  css  js  c++  java
  • 选择工作 回溯搜索

    设有ABCDE五人从事J1J2J3J4J5五项工作,每人只能从事一项,他们的效益如下。

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

    #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;
    }
    }
    }

  • 相关阅读:
    mysql授权GRANT ALL PRIVILEGES
    MySQL修改root密码的多种方法
    javaagent
    JavaAgent 应用(spring-loaded 热部署)
    JavaAgent入门
    java运行jar命令提示没有主清单属性
    连接到 redis 服务
    PHP中的socket TCP编程
    Memcached 与 Redis 区别
    rc.local配置
  • 原文地址:https://www.cnblogs.com/zzyh/p/6609428.html
Copyright © 2011-2022 走看看