关闭

c++回溯法实现工作分配问题

610人阅读 评论(0) 收藏 举报
分类:

思路

先初始化一个数组存入1至n;用于选择

1:回溯的边界条件为当前层数增加大于实际需要层数

2:当当前层数小于以下实际层数时

进入递归

递归内容:

1:当前层中使用循环,循环的起点i设为当前层,重点为最终层层数

{循环内

 先交换x中第x[i]和x[当前层];

即x[t]层已经被选择;

然后将花费增加x[当前层][x[当前层]];

递归(层数+1);

递归完成后,返回上节点;

花费减去当前层;

再交换x[t]和x[i];


#include <iostream>

using namespace std;
int x[100];
int n;//人数
int ren[100][100];
int mini=100000;
int cost=0;


void Backgui(int t)
{ if(t>n)
    { if(cost<mini)
            mini=cost;
//        for(int i=1;i<=n;i++)
//        {     cout<<x[i]<<" ";
//        }
//         cout<<cost<<endl   ;
        return;}

     for(int i=t;i<=n;i++)
    {   swap(x[i],x[t]);
         cost+=ren[t][x[t]];
       Backgui(t+1);
       cost-=ren[t][x[t]];
       swap(x[i],x[t]);



     }


}

int main()
{  cin>>n;
    for(int i=1;i<100;i++)
    {    x[i]=i;
    }
    for(int i=1;i<=n;i++)
    {
        for(int j=1;j<=n;j++)
        {   cin>>ren[i][j];
        }
    }
    Backgui(1);
   cout<<mini;
    return 0;
}

附上代码,没考虑建支

0
0
查看评论

【回溯法】工作分配问题

Description         设有n件工作分配给n个人。将工作i分配给第j个人所需的费用为cij 。 设计一个算法,对于给定的工作费用,为每一个人都分配1 件不同的工作,并使总费用达到最小。 ...
  • u010932314
  • u010932314
  • 2014-07-08 17:42
  • 1749

回溯法之工作分配问题

/* 时间:2011-11-20 作者:xiaosi 题目:工作分配问题 */ #include #include using namespace std; #define M 100 class Work { friend void work(); private...
  • SJF0115
  • SJF0115
  • 2011-11-20 12:42
  • 3829

工作分配问题 Java 回溯

问题描述:      设有n件工作分配给n个人。为第i个人分配工作j所需的费用为c[i][j] 。试设计一个算法,计算最佳工作分配方案,为每一个人都分配1 件不同的工作,并使总费用达到最小。  3 10 2 3  2 3 4...
  • u011980994
  • u011980994
  • 2013-12-12 19:36
  • 1466

回溯法-工作分配

ACM中的工作分配问题是一个典型的回溯问题,利用回溯思想能很准确地得到问题的解。下面就这个问题好好分析下。  问题描述:      设有n件工作分配给n个人。为第i个人分配工作j所需的费用为c[i][j] 。试设计一个算法,计算最佳工作...
  • bojue__123
  • bojue__123
  • 2014-11-12 20:09
  • 991

ACM典例分析之工作分配问题

<br /> ACM中的工作分配问题是一个典型的回溯问题,利用回溯思想能很准确地得到问题的解。下面就这个问题好好分析下。 <br /><br />问题描述: <br />    设有n件工作分配给n个人。为第i个...
  • f309587969
  • f309587969
  • 2011-04-21 14:52
  • 9791

回溯法 解 作业分配问题

回溯法 解 作业分配问题
  • developinglife
  • developinglife
  • 2011-05-24 16:36
  • 4860

回溯法3--工作分配问题

工作分配问题   问题重述:   设有n件工作分配给n个人。将工作i分配给j个人所需的费用为cij.设计一个算法,为每一个人都分配1件不同的工作,并使总费用达到最小。   例子:      第一个工作分配该三个人的相应费...
  • caiye917015406
  • caiye917015406
  • 2013-05-19 22:30
  • 1711

C++ 迷宫问题的回溯解法

// DataStruTest1.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include #include #include usin...
  • Boyhou
  • Boyhou
  • 2013-04-18 15:16
  • 2868

旅行售货员问题的回溯法求解

旅行售货员问题的解空间是一颗排序树,对于排序树的回溯法搜索与生成1,2,3,4,...,n的所有排列的递归算法Perm类似,开始时,x = [1,2,...,n],则相应的排序树由x[1:n]的所有排序构成。以下解释排序算法Perm: (1)假设Perm(1)的含义是对x = [1,2,...,n]...
  • qq_24059821
  • qq_24059821
  • 2016-05-04 21:22
  • 5393

回溯法---->图的着色问题

图的着色问题 1、问题描述 图的m-着色判定问题——给定无向连通图G和m种不同的颜色。用这些颜色为图G的各顶点着色,每个顶点着一种颜色,是否有一种着色法使G中任意相邻的2个顶点着不同颜色? 图的m-着色优化问题——若一个图最少需要m种颜色才能使图中任意相邻的2个顶点着不同颜色,则称这个数m为该...
  • ncepustrong
  • ncepustrong
  • 2013-05-16 10:12
  • 1646
    个人资料
    • 访问:1116次
    • 积分:16
    • 等级:
    • 排名:千里之外
    • 原创:1篇
    • 转载:0篇
    • 译文:0篇
    • 评论:0条
    文章分类
    文章存档