c# - 我想通过将输入数组的所有项目相乘来计算,但除了第 i 个项目

标签 c# arrays .net algorithm

举个例子

给定以下数组,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/

相关文章:

c# - 在 IValueConverter 的 Type targetType 参数中输入什么

c# - 如何在运行时向 DLL 添加代码

python - 查找 3 维 numpy 数组的唯一值的索引

c# - 使接口(interface)实现与 == 具有可比性

encryption - 在 C# .NET Core 中,我应该如何使用在 HSM 中创建的签名对 CSR 进行签名?

c# - 我的应用程序是手动启动的吗?

c# - 从 Google GeoCoder Json 获取纬度和经度? [C#]

c# - 如何将自定义动画添加到 ContextMenuStrip?

python - 重新排列numpy 2D数组的列

php - 在保留键的同时使用排序