2017-01-17 6 views
2

こんにちはすべて私は解決するための問題がある、私はそれを行う方法がわからない、任意のヘルプが役立つだろう。上記の予想シーケンスでどのようにCの色の最長シーケンスを見つけるには#

私は(C#を使用して)以下のinthe最後の5色から2色の最も長いシーケンスを計算する必要が

var colorValues = new []{"Blue", "Yellow","Black","Yellow", 
         "Green","Yellow", "Yellow","Red"} 

はイエロー」、「イエロー」、「イエロー」、「グリーン」であります"

何か助けていただければ幸いです。

+0

あなたが解決するためにジェイKadaneによって開発された1に基づくアルゴリズムを使用することができます[最大サブアレイの問題](https://en.wikipedia.org/wiki/Maximum_subarray_problem) –

+0

@ZoharPeledクイック返信をありがとうございます。 – jks

+0

いいえ、手元にはC#の実装はありませんが、これは実装するには非常に難しいアルゴリズムではなく、おそらくWeb上のどこかのC#で実装されています。 –

答えて

2

これを試してみてください:

var colorValues = new[] 
{ 
    "Blue", "Yellow", "Black", "Yellow", 
    "Green", "Yellow", "Yellow", "Red" 
}; 

var query = 
    from n in Enumerable.Range(0, colorValues.Length) 
    from l in Enumerable.Range(1, colorValues.Length - n) 
    let subseq = colorValues.Skip(n).Take(l).ToArray() 
    where subseq.Distinct().Count() == 2 
    orderby subseq.Count() descending 
    select subseq; 

Console.WriteLine(String.Join(", ", query.First())); 

それが与える:

イエロー、グリーン、イエロー、イエロー

+0

解決に感謝します!出来た :) – jks

関連する問題