C# 找出其和等于10的前两位数字
我有一个整数数组C# 找出其和等于10的前两位数字,c#,C#,我有一个整数数组intx[]: int[] intx = new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; 我需要找出前两位数字的和等于10 代码如下: Output should like (4 and 6). Output should like (3 and 7). Output should like (2 and 8). Output should like (1 and 9). public string Test() { int
intx[]
:
int[] intx = new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
我需要找出前两位数字的和等于10
代码如下:
Output should like (4 and 6).
Output should like (3 and 7).
Output should like (2 and 8).
Output should like (1 and 9).
public string Test()
{
int[] intx = new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
int i, j = intx.Length-1;
string s = "";
for (i = 0; i < 4; i++)
{
if ((intx[i] + intx[j - 1]) == 10)
{
s = (intx[i].ToString() + " and " + intx[j - 1].ToString());
}
j--;
}
return s;
}
输出应该类似于(4和6)。
输出应该是(3和7)。
输出应该是(2和8)。
输出应该是(1和9)。
公共字符串测试()
{
int[]intx=新的int[]{1,2,3,4,5,6,7,8,9,10};
inti,j=intx.Length-1;
字符串s=“”;
对于(i=0;i<4;i++)
{
如果((intx[i]+intx[j-1])==10)
{
s=(intx[i].ToString()+”和“+intx[j-1].ToString());
}
j--;
}
返回s;
}
您可以使用LINQ:
int[] intx = new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
var twoDigitsSumEquals10 = intx
.SelectMany((i1, index) =>
intx.Skip(index + 1)
.Select(i2 => Tuple.Create(i1, i2)))
.Where(t => t.Item1 + t.Item2 == 10);
SelectMany
在数组中的所有int
s和数组中索引大于第一个的所有int
s之间构建笛卡尔乘积(以防止重复)
测试:
输出:
(1, 9)
(2, 8)
(3, 7)
(4, 6)
或者仅第一个在like(1和9)
之间带有“and”:
更新:这里没有LINQ也一样:
List<Tuple<int, int>> pairs = new List<Tuple<int, int>>();
for (int i = 0; i < intx.Length - 1; i++)
{
for (int ii = i + 1; ii < intx.Length; ii++)
{
if(i + ii == 10)
pairs.Add(Tuple.Create(i, ii));
}
}
List pairs=新列表();
for(inti=0;i
你不用s做任何事
你只要重新分配它就行了。尝试将结果添加到列表并返回列表
public List<string> Test()
{
int[] intx = new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
int j = intx.Length-1;
List<string> result = new List<string>();
for (int i = 0; i < 4; i++)
{
if ((intx[i] + intx[j - 1]) == 10)
{
result.Add(intx[i].ToString() + " and " + intx[j--].ToString());
}
}
return result;
}
foreach(string s in Test())
Console.WriteLine(s);
公共列表测试()
{
int[]intx=新的int[]{1,2,3,4,5,6,7,8,9,10};
intj=intx.Length-1;
列表结果=新列表();
对于(int i=0;i<4;i++)
{
如果((intx[i]+intx[j-1])==10)
{
结果.Add(intx[i].ToString()+”和“+intx[j-->.ToString());
}
}
返回结果;
}
foreach(Test()中的字符串s)
控制台。写入线(s);
只返回第一个循环,然后提前退出循环
public string Test()
{
int[] intx = new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
int j = intx.Length-1;
for (int i = 0; i < 4; i++)
{
if ((intx[i] + intx[j - 1]) == 10)
{
return (intx[i].ToString() + " and " + intx[j--].ToString());
}
}
return "";
}
公共字符串测试()
{
int[]intx=新的int[]{1,2,3,4,5,6,7,8,9,10};
intj=intx.Length-1;
对于(int i=0;i<4;i++)
{
如果((intx[i]+intx[j-1])==10)
{
返回(intx[i].ToString()+”和“+intx[j-->.ToString());
}
}
返回“”;
}
数组总是被排序吗?1,9-2,8-3,7-..怎么样。。。。?!前两个关闭的数字'坐听起来像是你在要求我们做你的家庭作业。。。顺便说一句,为什么1和9不是一个选项?什么是一个封闭的数字?括号在输出中来自哪里?我打算建议您加入“和”
,这将提供OP所需的输出,只需第一次组合。不需要所有的可能性,我只是提供了一个例子。用户只能请求第一个组合。它可能是10的和,或9的和,等等。只需要第一个组合。@user3391687:我不明白,我已经演示了如何只获得第一个组合。如果您不想阅读我的全部答案,请搜索“或仅搜索第一个”
;)只需要第一个组合。不需要所有的可能性,我只是提供了一个例子。用户只能请求第一个组合。它可能是10的和,或9的和,等等。只需要第一个组合。
public List<string> Test()
{
int[] intx = new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
int j = intx.Length-1;
List<string> result = new List<string>();
for (int i = 0; i < 4; i++)
{
if ((intx[i] + intx[j - 1]) == 10)
{
result.Add(intx[i].ToString() + " and " + intx[j--].ToString());
}
}
return result;
}
foreach(string s in Test())
Console.WriteLine(s);
public string Test()
{
int[] intx = new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
int j = intx.Length-1;
for (int i = 0; i < 4; i++)
{
if ((intx[i] + intx[j - 1]) == 10)
{
return (intx[i].ToString() + " and " + intx[j--].ToString());
}
}
return "";
}