最长上升序列C#

最长上升序列C#,c#,C#,因此,我对C#很陌生,面临着一个需要我: 搜索整数数组中最长的整数升序序列。作为元素序列的席(1)≤ 我≤ n)如果i i席席=1,则上升(1)≤ 我≤ n-1)。阵列的大小由用户选择。数组的值是计算机生成的介于0和1000之间的随机数。程序应打印开始索引和最长上升序列的长度 1 2 3 1 1 2 3 4 1 * > > > > ê start = 3 (*) length = 5 (>) i = 8 (^) 3+4 = e 3+5<8 //f

因此,我对C#很陌生,面临着一个需要我:

搜索整数数组中最长的整数升序序列。作为元素序列的席(1)≤ 我≤ n)如果i i席席=1,则上升(1)≤ 我≤ n-1)。阵列的大小由用户选择。数组的值是计算机生成的介于0和1000之间的随机数。程序应打印开始索引和最长上升序列的长度

1 2 3 1 1 2 3 4 1
      * > > > > ê
start = 3 (*)
length = 5 (>)
i = 8 (^)
3+4 = e

3+5<8 //false : current sequence
以下是我到目前为止的代码(我只能按升序对数组排序):

使用系统;
使用System.Collections.Generic;
使用系统集合;
使用System.Linq;
使用系统文本;
命名空间递增序列
{
阶级上升序列
{
公共静态void Main(字符串[]args)
{
Console.WriteLine(“升序!”);
生成枚举器();
}
公共静态void GeneratorEnumber()
{
int i,j,n,数字;
int[]数组=新的int[100];
int[]数组1=新int[100];
随机=新随机();
写入(“\n输入要存储在数组中的元素数:”);
n=Convert.ToInt32(Console.ReadLine());
Write(“\n{0}数组正在生成------\n”,n);
对于(i=0;i对于(i=0;i您对一阶数组的处理方法是错误的,这导致一些人很不幸地感到困惑。

如果开始对数组进行排序,则会丢失这些元素的原始位置信息,这些信息非常重要。相反,您应该在数组中循环,并检查当前元素是否大于上一个元素(升序)

所以最后发现的序列从3开始,长度为4。 这意味着该序列将在索引7处结束。 由于我们目前正在检查循环中的索引8,我们可以看到它不是同一序列的一部分

1 2 3 1 1 2 3 4 1
      * > > > > ê
start = 3 (*)
length = 5 (>)
i = 8 (^)
3+4 = e

3+5<8 //false : current sequence
1231
* > > > > ê
开始=3(*)
长度=5(>)
i=8(^)
3+4=e

3+5您没有提供您的问题是什么?@fubo可能是因为排序数组的问题被问了很多次,以至于一遍又一遍地回答都很烦人。@fubo因为读了HimBromBeere的评论,但据我所知,这个问题不是重复的。问题不是关于如何排序序列,而是找到一个排序的数组sequence@j德旺,嗯,我想是的。我从我的教授那里得到了这个练习。即使我问这个问题,也不完全理解我的教授想要什么,所以我必须发布整个问题+我迄今为止的进展,以便有人能给我一些启示:(谢谢你的回答!!我完全被给定的问题弄糊涂了,所以我在解决方案上做了一个错误的转弯^^@Steve我知道你的意图很好,谢谢你,但我在这个问题上困惑了两天。这不是一个家庭作业,而是一个供学生练习的可选练习。我不会把所有的东西都抄过来我是我程序的答案。在动手工作之前,我会先试着理解它:)@Steve,如果一个人想学习,那么她\他可以从正确的答案中学到很多东西(更不用说她\他会知道dotnetfiddle的存在).如果她\他只是在完成家庭作业之后,你就不能教你做任何事情。@Middle_unga_bunga如果我的答案有什么让你困惑的地方,请告诉我,我会尽力解释。@JoostK nevermind,我现在明白了。谢谢你迄今为止的帮助!!
1 2 3 1 1 2 3 1 1
      * > > > e ^
start = 3 (*)
length = 4 (>)
i = 8 (^)
3+4 = e

3+4<8 //true : new sequence
1 2 3 1 1 2 3 4 1
      * > > > > ê
start = 3 (*)
length = 5 (>)
i = 8 (^)
3+4 = e

3+5<8 //false : current sequence