亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

我想通過將輸入數組的所有項目相乘來計算,但除了第 i 個項目

我想通過將輸入數組的所有項目相乘來計算,但除了第 i 個項目

C#
慕容森 2022-06-12 11:21:22
舉個例子給定以下數組,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] + " ");        }    }
查看完整描述

3 回答

?
拉丁的傳說

TA貢獻1789條經驗 獲得超8個贊

我的方法遵循許多人的思路。為了簡單起見,我使用了 LINQ。


        int fullProduct = 1;

        List<int> input = new List<int> { 2, 3, 6, 8 };

        List<int> result = new List<int>();


        input.ForEach(v => { fullProduct *= v; });

        input.ForEach(c=>

        {

           result.Add(fullProduct / c);

        });


查看完整回答
反對 回復 2022-06-12
?
子衿沉夜

TA貢獻1828條經驗 獲得超3個贊

使用 Linq 執行此操作的一種方法是使用Aggregate獲取值的總乘積,然后將結果值分配為等于乘積除以當前循環索引處的輸入項:


static void Multiply()

{

    int[] input = { 2, 3, 6, 8 };

    int[] result = new int[input.Length];


    var product = input.Aggregate((i, j) => i * j);


    for (int i = 0; i < input.Length; i++)

    {

        result[i] = product / input[i];

    }


    Console.WriteLine(string.Join(" ", input));

    Console.WriteLine(string.Join(" ", result));

    Console.ReadKey();

}

輸出

http://img1.sycdn.imooc.com//62a55bee00017a2e11640664.jpg

查看完整回答
反對 回復 2022-06-12
?
德瑪西亞99

TA貢獻1770條經驗 獲得超3個贊

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




    }

}

PS??峙氯绻悴荒軇摻ㄟ@樣一個簡單的算法,你將無法創建更多可用的算法。你應該為此努力。


查看完整回答
反對 回復 2022-06-12
  • 3 回答
  • 0 關注
  • 148 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號