如何实现两个二维数组行列值相乘并将结果存入第三个二维数组
代码修改方案
你要实现的是矩阵乘法运算,forecastPrices[i][j]的取值为recipe第i行元素和prices第j列对应位置元素的乘积之和。
前提假设
recipe的列数 =prices的行数,根据你现有代码的循环边界,默认三个二维数组均为numberOfProducts * numberOfProducts的方阵- 注意统一结果数组命名,你需求里的数组名为
forecastPrices,原示例代码中写的是forecastCost,可按需调整
修改后代码
for(int i = 0 ; i < numberOfProducts ; i++) { for(int j = 0 ; j < numberOfProducts ; j++) { // 每次计算新位置前先把初始值置为0 forecastPrices[i][j] = 0; // 第三层循环遍历行/列的对应元素,累加乘积 for(int k = 0; k < numberOfProducts; k++) { forecastPrices[i][j] += recipe[i][k] * prices[k][j]; } } }
维度不匹配的调整方案
如果recipe和prices不是方阵,比如recipe的列数、prices的行数为numberOfMaterials,只需要把第三层循环的边界从numberOfProducts改为numberOfMaterials即可。
内容的提问来源于stack exchange,提问作者s k y l i n e
相关产品推荐
相关产品推荐

