标签:col color lse bsp image else 不同 sum 需要
设有n件工作分配给n个人。将工作i分配给第j个人所需的费用为cij 。 设计一个算法,对于给定的工作费用,为每一个人都分配1 件不同的工作,并使总费用达到最小。
解空间:
int Backtrack(int t) { if(t>n && sum<Min){ Min=sum; return Min; } else { for(int k=0;k<n;k++){ if(b[k]==0){ sum=sum+a[t-1][k]; b[k]=1; if(sum<=Min) Backtrack(t+1); sum=sum-a[t-1][k]; b[k]=0; } } } }
约束函数:if(sum<=Min) 判断对比当前选择后的费用sum与之前记录的最小总费用Min
减枝:if(b[k]==0) 将已选择的物品记录,并在解空间中删除对应树枝。
这次实践题目不仅需要对解空间清楚分析并写出其对应的回溯算法,更需要很好地减枝,将算法时间缩短,通过这次实践,能对回溯算法如何减枝有了更深的体会,以及如何全面减枝有了一定地训练。
标签:col color lse bsp image else 不同 sum 需要
原文地址:https://www.cnblogs.com/luzhibin/p/10159618.html