为了账号安全,请及时绑定邮箱和手机立即绑定

数组元素相乘问题

数组元素相乘问题

C#
梵蒂冈之花 2022-08-20 16:38:50
基本上,我试图将第一个数组的每个元素与第二个数组的每个元素相乘,然后将其全部存储在最后作为总计。我对编码很陌生,所以只是想学习,这个真的让我卡住了。这是它最终应该做什么的例子。ExampleArray1 = 5,6,7,8 ExampleArray2 = 2,3,4(5*2)+(5*3)+(5*4) + (6*2)+(6*3)+(6*4) + (7*2)+(7*3)+(7*4) + (8*2)+(8*3)+(8*4) = 234我的代码        int[] firstArray = { 5, 6, 7, 8 };        int[] secondArray = { 2, 3, 4 };        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 + j] = firstArray[i] * secondArray[j];                Console.WriteLine(thirdArray[i * firstArray.Length + j]);            }
查看完整描述

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());


查看完整回答
反对 回复 2022-08-20
?
蛊毒传说

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();


查看完整回答
反对 回复 2022-08-20
  • 2 回答
  • 0 关注
  • 70 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信