算法设计与分析
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《算法设计与分析》课程报告
课题名称:工作分配问题算法
课题负责人名(学号): XX
同组成员名单(角色):
指导教师: XX
评阅成绩:
评阅意见:
提交报告时间:2013年6 月18 日
工作分配问题算法
计算机科学与技术专业
学生XX 指导老师XX
[摘要]回溯算法也叫试探法,它是一种系统地搜索问题的解的方法。
用回溯算法解决问题的一般步骤:
1 针对所给问题,定义问题的解空间,它至少包含问题的一个(最优)解。
2 确定易于搜索的解空间结构,使得用回溯算法方便地搜索整个解空间。
3 以深度优先的方式搜索解空间,并且在搜索过程中用剪枝函数避免无效搜索。
关键词:工作分配问题回溯算法
问题描述:设有n件工作分配给n个人。将工作i分配给第j个人所需的费用为cij 。试设计一个算法,为每一个人都分配1 件不同的工作,并使总费用达到最小。设计一个算法,对于给定的工作费用,计算最佳工作分配方案,使总费用达到最小。
由文件input.txt给出输入数据。第一行有1 个正整数n (1≤n≤20)。接下来的n行,每行n个数,表示工作费用。将计算出的最小总费用输出到文件output.txt。例如:
input.txt output.txt
3 9
10 2 3
2 3 4
3 4 5
代码:
#include
#include
using namespace std;
ifstream fin("e:\\gongzuofenpei\\input.txt");
ofstream fout("e:\\gongzuofenpei\\output.txt");
int **cost;
bool *body;
int cur_cost;//当前花费
int min_cost;//最小花费
int n;
int output()
{
fout< system("pause"); return 1; } //实现回溯 int backtrack(int t) { if(t>n) { if(cur_cost min_cost=cur_cost; } else { for(int i=1;i<=n;i++) { if(body[i]) { body[i] = false; swap(cost[t][1],cost[t][i]); cur_cost+=cost[t][1]; if(cur_cost cur_cost-=cost[t][1]; body[i] = true; swap(cost[t][1],cost[t][i]); } } } system("pause"); return 1; } //主函数 int main() { fin>>n; cost = new int*[n+1]; for (int i=1;i<=n;i++) cost[i] = new int[n+1]; for (int i=1;i<=n;i++)//第i个任务 for(int j=1;j<=n;j++)//第j个人 fin>>cost[i][j]; body = new bool[n+1]; for (int i=1;i<=n;i++) body[i] = true; //分配min_cost初值,为第i个任务分配给第i个人的总花费 min_cost = 0; for(int i=1;i<=n;i++) min_cost += cost[i][i]; cur_cost=0; backtrack(1); output(); for(int i=1;i<=n;i++) delete cost[i]; delete cost,body; fin.close(); fout.close(); system("pause"); return 1; } input.txt文件: output.txt文件 改革开放以来,我国国民经济正逐步向着健康、……(正文用小四号宋体。行距20磅,每行34个汉字。16开纸打印。微软word软件排版。) 参考文献 [1] 张繁,蔡家楣.电子政务系统中动态工作流技术的应用.计算机工 程,2003,29(12):72-74 [2] 黎连业.网络综合布线系统与施工技术.机械工业出版社,2002 [3] 思科公司./global/CN/Products/si/casi/ca3500, 2003 [4] 联想公司./Products/channel,2003 [5] 北京领先时代科技发展有限公司./product _silcon.htm,2003 (“参考文献”与上文空一行。“参考文献”四个字用小四号黑体。“参考文献”的正文用五号宋体。所有引用文献必须在正文中按引用顺序标引出来。)