我选择这个解决方案牙齿在每一行中选择任意数字。如果选择行数x1和列y1,我不能选择另一个行数x1和列y1,我必须在每一行和每一列中选择一个数,使这些数的总和尽可能小
1 2 3 1
2 3 1 3
2 2 1 2
3 4 1 9
我的函数只生成一个不是最优的解决方案,即:
1* 2 3 1
2 3* 1 3
2 2 1* 2
3 4 1 9*
但最好的解决方案是:
1 2 3 1*
2 3 1* 3
2* 2 1 2
3 1* 1 9
我需要改变我的功能?我这两天找不到解决办法帮帮我,我将不胜感激
bool back(int n, r ** tab, int k){
for(int i=0;i<n;i++){
if (check(n,tab,k)){
tab[k][i].moze=true;
if (k==n-1)
{
for(int j=0;j<n;j++)
{
for(int c=0;c<n;c++)
{
if(tab[j][k].moze==true)
cout<<tab[j][i].quantity;
}
}
return true;
}
if (back(n,tab,k+1))
return true;
else
tab[k][i].moze=false;
}
}
return false;
}
有人帮我为你解决,可能是几分钟的问题我已经累了5天了