2 回答
TA贡献1836条经验 获得超5个赞
您不需要第三个数组,只需对结果求和即可
var total = 0;
for (int i = 0; i < firstArray.Length; i++)
for (int j = 0; j < secondArray.Length; j++)
{
total += (firstArray[i] * secondArray[j]);
}
Console.WriteLine(total);
但是,您忘记在第三个数组索引中减去一种形式的长度。
即获取您需要的索引i * (firstArray.Length - 1) + j
int[] thirdArray = new int[firstArray.Length * secondArray.Length];
for (int i = 0; i < firstArray.Length; i++)
for (int j = 0; j < secondArray.Length; j++)
{
thirdArray[i * (firstArray.Length - 1) + j] = firstArray[i] * secondArray[j];
}
Console.WriteLine(thirdArray.Sum());
TA贡献1895条经验 获得超3个赞
你可以应用一些基本的代数来简化这一点:
var total = 0;
var array1Total = 0;
var array2Total = 0;
for (int i = 0; i < firstArray.Length; i++)
{
array1Total += firstArray[i];
}
for (int j = 0; j < secondArray.Length; j++)
{
array2Total += secondArray[j];
}
total = array1Total * array2Total;
Console.WriteLine(total);
原因是,如果展开 (x0+x1+x2+x3...)*(y0+y1+y2+...)然后你可以看到,你将x0乘以每个y,然后将x1乘以每个y,依此类推。因此,您将获得第一个括号中的每个元素乘以第二个括号中的每个元素。
虽然这看起来没有太大区别,但对于大型阵列来说会好得多。如果数组的长度为 m 和 n,则通过嵌套循环方法,您将有 m*n 循环迭代。使用上述技术,您将拥有m + n。对于小值,这没什么大不了的。如果您有数千个项目的数组,那么上述操作将明显更快。
当然,还有一种更简单的方法可以做到以上几点:
var total = firstArray.Sum()*secondArray.Sum();
- 2 回答
- 0 关注
- 70 浏览
添加回答
举报