下面这个问题用非回溯法可行吗?
//假设需要N个任务分配给N个工人同时去完成,每个人都能承担这N个任务,但费用不同。下面计算总费用最小的一种工作分配方案。在该方案中,为每个人分配1个不同的任务。
//我想用非回溯法,下面是我的程序。
#include <iostream>using namespace std;const int Max=100000;//设置任务工资上限int Min(int *a[],int n,int i){ int t=Max,b,c; for (int j=0;j<n;j++) { if (t>a[i][j]) { t=a[i][j]; b=i; c=j; } } int k=t; for ( j=0;j<n;j++) { a[b][j]=Max; } for (i=0;i<n;i++) { a[i][c]=Max; } return k;}void main(){ const int n=3;//可以扩大n来说明不是最省情况 int *a[n]; for(int i = 0; i <n; i++) { a[i]=new int[n] ; } for ( i=0;i<n;i++) { for (int j=0;j<n;j++) { cin>>a[i][j]; } } int sum=0; for ( i=0;i<n;i++) { sum+=Min(a,n,i); } cout<<sum<<endl;}