问题描述
有这样一组数{12,4,5,6,5,8,10,7,16,14,18,30},找出这组数的最大子分式。子分式的定义:从这组数的第一个数开始连续的升序直到出现不符合的数结束,这样的一组数为子分式。例如{2,3,4,5,4,6,3}这组子分式为{2,3,4,5}{4,6}{3}
解决方案
解决方案二:
StringBuilder是用来拼接string的,和你的题目没关系而且昨天那贴已经有很多答案了。
解决方案三:
循环被.当前跟下一个对比.如果+1==下一个就添加到集合中.如果不等于就开辟一个新的数组.直到结束
解决方案四:
LZ希望要的是完全能运行的,然后这三天下来估计楼主就没去看过一点资料,哎……
解决方案五:
求代码
解决方案六:
主要就是得出之后判断长度的不知道怎么写
解决方案七:
把你以用的代码贴出来StingBuilder根本就区分不出两次Append的界限
解决方案八:
引用3楼starfd的回复:
LZ希望要的是完全能运行的,然后这三天下来估计楼主就没去看过一点资料,哎……
嗯,楼主关心的是stringbuilder怎样用哇哈哈。
解决方案九:
int[]n=newint[]{12,4,5,6,5,8,10,7,16,14,18,30};ints=0;varst=newDictionary<int,int>();for(inti=1;i<=n.Length;i++){intt=i==n.Length?n[i-1]+1:n[i];if(t<n[i-1]||i==n.Length){Console.WriteLine(string.Join(",",n.Skip(s).Take(i-s)));s=i;}varb=n.Skip(s).Take(i-s);}Console.ReadKey();}}}分成子分式的我已经写出来了,谁能帮我把找出最大子分式的代码写出来?
解决方案十:
vara=newint[]{12,4,5,6,5,8,10,7,16,14,18,30};ints=0;varst=newDictionary<int,int>();for(inti=1;i<a.Length;i++){if(a[i]>a[i-1])continue;st[s]=i-s;s=i;}varp=st.Keys.Select(k=>new{k,len=st[k]}).OrderByDescending(k=>k.len).ToList();foreach(variinp){Console.WriteLine("下标:{0}长度:{1}[{2}]",i.k,i.len,string.Join(",",a.Skip(i.k).Take(i.len)));}