美文网首页
分配人员(深搜未剪枝版)

分配人员(深搜未剪枝版)

作者: 番薯夹islandfsj | 来源:发表于2017-10-12 10:27 被阅读0次

题目描述

有n个人从事n项工作,每个人只能从事一项,程序读入他们做每个工作的效益,求最佳安排使效益最高

输入文件

第一行为n,以下n*n为。。。(如题)

输出文件

两行,第一行第i个数表示第i个人从事的工作,第二行为最优情况下的效率的总和

#include<iostream>

using namespace std;

int data[10][10];
int f[10],g[10],p[10];//f为深搜中当前的人员分配,g中为当前最优的人员分配方案,p用1/0表示第i份工作是否被做
int n,maxl,now;//now为当前的效率总和,maxl为当前最优值

void go(int step){
  if(step==n+1){
    if(now>maxl){
      maxl=now;
      for(int i=1;i<=n;i++) g[i]=f[i];
  }
  return;
}//判断是否分配完成,并尝试更新最优值
  for(int i=1;i<=n;i++){
    if(p[i]==0){
      f[step]=I; p[i]=1; now+=data[step][i];//标记
      go(step+1);
      now-=data[step][i];
      p[i]=0;//回溯
      }
   }
}

int main(){
  maxl=0; cin>>n;
  for (int i=1;i<=n;i++)
    for (int j=1;j<=n;j++)
      cin>>data[i][j];
  for (int i=1;i<=n;i++) p[i]=0;//初始化
  go(1);
  for(int i=1;i<n;i++) cout<<g[i]<<" ";
  cout<<g[n]<<endl;
  cout<<maxl<<endl;//输出最优解
  return 0;
}

相关文章

  • 分配人员(深搜未剪枝版)

    题目描述 有n个人从事n项工作,每个人只能从事一项,程序读入他们做每个工作的效益,求最佳安排使效益最高 输入文件 ...

  • 分配人员(深搜剪枝版)

    问题描述 有N个景点和N个导游,每个导游对每个景点熟悉程度不同,一个景点只需一个导游。求最大熟悉度。(0<=N<=...

  • 邮局(深搜+剪枝)

    题目如下: 这道题使用的方法是剪枝+深搜。解题步骤在于:先设定一个邮局是已确定的,得出所有的村民到该邮局的距离。再...

  • 深度搜索与回溯

    深度搜索与回溯法的区别 回溯法 = 深搜 + 剪枝。一般大家用深搜时,或多或少都会剪枝。深搜一般用递归实现,比较简...

  • 第17章 深搜的剪枝策略

    1、找数字 算法分析 枚举每个位置选0还是选1,若长度超过19,则break注意:第一个位置一定选1,其中dfs(...

  • 人员分配

    打工小妹:主管,楼下有人说保安拦着不让进。 主管:一会你看一下,跟保安讲道理的去研发部,软磨硬泡进来的去客服部,给...

  • leetcode算法题解(Java版)-16-动态规划(单词包含

    摘要: 碰到二叉树的问题,差不多就是深搜、广搜,递归那方面想想了,当然如果要考虑一下空间、时间,还需要进行剪枝和压...

  • Leetcode-140-Word Break II

    这种搜索的题目直接上深搜90%都能AC,不过这题属于剩下那10%,39个数据点有8个都TLE了,看来需要剪枝策略,...

  • git团队开发使用到的命令

    1.开发的项目有上线版和开发版两种,我们一般在开发版上面进行开发,利用git的分支管理功能,为每组开发人员分配分支...

  • 母爱有感

    偶然闲时搜歌听,未搜先听歌一首; 歌名妈在家就在,又见鸡妈护小鸡; 随即深出一感慨,母爱伟大亦无边。

网友评论

      本文标题:分配人员(深搜未剪枝版)

      本文链接:https://www.haomeiwen.com/subject/pxenyxtx.html