//2D array with row4 and column4
11 12 18 40
14 15 13 22
11 17 19 23
17 14 20 28
私の質問は、このようにアイデアをループする方法です。[0][0] = 11 をループする場合。 12 、 18 、 40 である同じ行全体と、同じ列全体 14 、 11 、 17 はカウントできません。その後、2 回目のループはテーブルをループするだけです。このようなサンプル
**11** **12** **18** **40**
**14** 15 13 22
**11** 17 19 23
**17** 14 20 28
私のループは、 ** なしでそれらの番号を読み取ることができます。二度目。2 番目の列のうち最小の値を選択して変数 temporaryA に格納し、3 番目のループでは 3 番目の列を選択して最小値を選択し、temporaryB に格納し、4 番目のループでは 4 番目の列を選択して temporaryC に格納します。
ついに。私の答えは、私が今選んだ最初の数字です ANswer = 11 + temporaryA + temporaryB +temporaryC
void BranchandBound( int **minimumCost , int p , int j ){
/*
11 12 18 40
14 15 13 22
11 17 19 23
17 14 20 28
*/
bool *stars = new bool[4];
int totalMin = 0;
for( int y = 0 ; y < p ; y++ ){
int min,iMin = -1;
for( int x = 0 ; x < j ; x++ ){
if( !stars[y] || (iMin < 0 || min > minimumCost[y][x]) ){
min = minimumCost[y][x];
cout << "minimum : " << min << endl;
iMin = min;
totalMin += min;
}
stars[iMin] = 1;
}
}
cout << "Total : " << totalMin << endl;
}