举个例子
给定以下数组,inputArray: [2,3,6,8]
结果数组将是:resultArray: [144,96,48,36]
resultArray[0] = inputArray[1] * inputArray[2] * inputArray[3]
resultArray[1] = inputArray[0] * inputArray[2] * inputArray[3]
resultArray[n] = inputArray[0] *...* inputArray[n-1] * inputArray[n+1] *...* inputArray[last]
我已经编写了如下代码,但是我如何使用 for 或另一个循环来执行此计算。
static void multiply()
{
int[] inputArray = { 2, 3, 6, 8 };
int[] resultArray = { 1, 1, 1, 1 };
for (int i = 0; i < inputArray.Length; i++)
{
Console.Write(inputArray[i] + " ");
}
Console.WriteLine();
//for (int i = 0; i < inputArray.Length; i++)
//{
// resultArray[i] = inputArray[0] * inputArray[i - 1] * inputArray[i + 1];
//}
resultArray[0] = inputArray[1] * inputArray[2] * inputArray[3];
resultArray[1] = inputArray[0] * inputArray[2] * inputArray[3];
resultArray[2] = inputArray[0] * inputArray[1] * inputArray[3];
resultArray[3] = inputArray[0] * inputArray[1] * inputArray[2];
for (int i = 0; i < resultArray.Length; i++)
{
Console.Write(resultArray[i] + " ");
}
}
最佳答案
class Program
{
static int GetMulResult(int[] input, int ommitingIndex)
{
int result = 1;
for(int i = 0; i < input.Length; i++)
{
if (i == ommitingIndex)
continue;
result *= input[i];
}
return result;
}
static void Main(string[] args)
{
int[] inputArray = { 2, 3, 6, 8 };
int[] result1 = new int[4];
for(int i = 0; i < inputArray.Length; i++)
result1[i] = GetMulResult(inputArray, i);
}
}
附言。恐怕如果您不能创建这样一个简单的算法,您将无法创建更多可用的算法。你应该努力解决这个问题。
关于c# - 我想通过将输入数组的所有项目相乘来计算,但除了第 i 个项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53760765/