用一些逻辑比较二维数组,想不出来
Compare 2D array with some logic, can't think of it
//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)不能计数。在这之后,我的第二个循环将像这样循环表格样本
**11** **12** **18** **40**
**14** 15 13 22
**11** 17 19 23
**17** 14 20 28
我的循环只能读取那些没有**的数字。第二次了。将选择第二列,它的值最小,并存储到变量temporaryA中;第三个循环将选择第三列,选择最小的值,并存储到临时b中;第四个循环将选择第四列,并存储到临时c中
最后。我的答案将是我刚才选择的第一个数字答案= 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;
}
您想要排除最小值(在您的问题中用星号标记)的列。让我们记住它们:
bool stars[4] = { 0 };
现在像往常一样找到最小值…
for (int y = 0; y < sz; y++) {
int min, iMin = -1;
for (int x = 0; x < sz; x++) {
在这里,我们必须跳过已经是最小值的列:
if (!stars[x] && (iMin < 0 || min > numbers[x][y])) {
min = numbers[x][y];
iMin = x;
}
现在记住下一个最小值是从哪里来的:
stars[iMin] = 1;
}
}
完成了!对所有min
求和留给读者作为练习。
相关文章:
- 将值从二维数组输出到文本文件
- 在二维数组中查找最小值和最大值?
- 移动二维数组中的字符
- 如何正确填充在堆上分配的二维数组?
- 传递二维数组时出现问题
- 具有随机数的二维数组不会更改
- 如何在C++中获取二维数组中最少的一列数?
- 如何使用用户输入变量制作二维数组?
- C++ 中动态二维数组的访问冲突
- 遍历二维数组的所有子数组
- 将二维数组的所有元素插入到一维数组中
- 在函数中传递二维数组
- 为什么指针在对二维数组进行排序时无法正常工作?
- C++ 将二维数组索引与条件语句中的函数值进行比较
- 如何为映射和priority_queue编写比较器,其中元素是二维数组
- 比较二维数组中的数字时的无限循环
- 如何在 c++ 中将一维数组中的值与二维数组中的值进行比较
- 将二维数组与 0 (c++) 进行比较
- 通过C和C++中的二维数组的比较
- 用一些逻辑比较二维数组,想不出来