设为首页 加入收藏

TOP

回溯法计算总费用最小费用
2014-11-23 18:00:32 】 浏览:4030
Tags:回溯 计算 费用 最小

  /*


  假设需要将N个任务分配给N个工人同时去完成,每个人都能承担这N个任务,但费用不


  同.下面的程序用回溯法计算总费用最小的一种工作分配方案,在该方案中,为每个人分配


  1个不同的任务.


  程序中,N个任务从0开始依次编号,N个工人也从0开始依次编号,主要的变量说明如下:


  c[i][j]:将任务i分配给工人j的费用;


  task[i]:值为0表示任务i未分配,值为j表示任务i分配给工人j;


  worker[k]:值为0表示工人k未分配任务,值为1表示工人k已分配任务;


  mincost:最小总费用.


  */


  #include


  #include


  #define N 8 //N表示任务数和工人数


  int c[N][N];


  unsigned int mincost = 65535; //设置的初始值,大于可能的费用


  int task[N],temp[N],worker[N];


  void Plan(int k,unsigned int cost){


  int i;


  if(k>=N && cost


  mincost = cost;


  for(i=0;i


  temp[i] = task[i];


  }


  }else{


  for(i=0;i


  if(worker[i]==0 && cost+c[k][i]){


  worker[i] = 1; task[k] = i;


  Plan(k+1,cost+c[k][i]);


  worker[i] = 0; task[k] = 0;


  }


  }


  }


  }


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇C语言实例:素数幻方 下一篇C语言实例:分数之和

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目