C# 我希望通过将输入数组的所有项相乘来计算,但不包括例如第I项
例如 给定以下数组,C# 我希望通过将输入数组的所有项相乘来计算,但不包括例如第I项,c#,arrays,.net,algorithm,C#,Arrays,.net,Algorithm,例如 给定以下数组,输入数组:[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
输入数组:[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] + " ");
}
}
static void multiply()
{
int[]inputArray={2,3,6,8};
int[]resultArray={1,1,1,1};
for(int i=0;i
基本上,您只需在结果数组中留下所需索引的数字,因此可以除以该数字。下面是可以帮助您的代码
int result = 1;
for (int j = 0; j < inputArray.Length; j++)
{
result = result * inputArray[j];
}
for (int i = 0; i < resultArray.Length; i++)
{
resultArray[i] = result / inputArray[i];
}
int结果=1;
for(int j=0;j
如果答案有帮助,请接受。基本上,您只需在结果数组中留下所需索引的数字,因此您可以除以该数字。下面是可以帮助您的代码
int result = 1;
for (int j = 0; j < inputArray.Length; j++)
{
result = result * inputArray[j];
}
for (int i = 0; i < resultArray.Length; i++)
{
resultArray[i] = result / inputArray[i];
}
int结果=1;
for(int j=0;j
如果答案有帮助,请接受。如果索引相同,则不能将值相乘:
private static void multiply()
{
int[] inputArray = { 2, 3, 6, 8 };
int[] resultArray = new int[inputArray.Length];
for ( int i = 0; i < inputArray.Length; i++ )
Console.Write(inputArray[i] + " ");
Console.WriteLine();
for ( int indexInOutput = 0; indexInOutput < resultArray.Length; indexInOutput++ )
{
int result = 1;
for ( int indexInInput = 0; indexInInput < inputArray.Length; indexInInput++ )
{
if ( indexInInput != indexInOutput )
result *= inputArray[indexInInput];
}
resultArray[indexInOutput] = result;
}
for ( int i = 0; i < resultArray.Length; i++ )
Console.Write(resultArray[i] + " ");
}
如你所料
这种方法避免了如果输入数组中有大的数字,并且尝试将所有数字相乘,然后除以未使用的数字(例如,如果inputArray
为
{ 1001, 1002, 1003, 1004 }
如果索引相同,则不能将该值相乘:
private static void multiply()
{
int[] inputArray = { 2, 3, 6, 8 };
int[] resultArray = new int[inputArray.Length];
for ( int i = 0; i < inputArray.Length; i++ )
Console.Write(inputArray[i] + " ");
Console.WriteLine();
for ( int indexInOutput = 0; indexInOutput < resultArray.Length; indexInOutput++ )
{
int result = 1;
for ( int indexInInput = 0; indexInInput < inputArray.Length; indexInInput++ )
{
if ( indexInInput != indexInOutput )
result *= inputArray[indexInInput];
}
resultArray[indexInOutput] = result;
}
for ( int i = 0; i < resultArray.Length; i++ )
Console.Write(resultArray[i] + " ");
}
如你所料
这种方法避免了如果输入数组中有大的数字,并且尝试将所有数字相乘,然后除以未使用的数字(例如,如果inputArray
为
{ 1001, 1002, 1003, 1004 }
类程序
{
静态int GetMulResult(int[]输入,int ommitingIndex)
{
int结果=1;
for(int i=0;i
另外,我担心如果你不能创建这样一个简单的算法,你将无法创建更多可用的算法。你应该在这方面下功夫。课程计划
{
静态int GetMulResult(int[]输入,int ommitingIndex)
{
int结果=1;
for(int i=0;i
另外,我担心如果你不能创建这样一个简单的算法,你将无法创建更多可用的算法。您应该对此进行操作。使用Linq的一种方法是使用
聚合
获得值的总乘积,然后将结果值指定为当前循环索引处输入项除以的乘积:
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();
}
static void Multiply()
{
int[]输入={2,3,6,8};
int[]结果=新的int[input.Length];
var乘积=输入。聚合((i,j)=>i*j);
for(int i=0;i
输出
使用Linq的一种方法是使用
聚合
获得值的总乘积,然后将结果值指定为当前循环索引处输入项除以的乘积:
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();
}
static void Multiply()
{
int[]输入={2,3,6,8};
int[]结果=新的int[input.Length];
var乘积=输入。聚合((i,j)=>i*j);
for(int i=0;i
输出
我的方法遵循了许多人的思想路线。为了简单起见,我使用了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);
});
int-fullProduct=1;
列表输入=新列表{2,3,6,8};
列表结果=新列表();
input.ForEach(v=>{fullProduct*=v;});
input.ForEach(c=>
{
结果。添加(完整产品/c);
});
我的a