[Image of the actual problem]最小差分配列要素含む配列を取得する方法を
我々が選択すべき項目があるINPUT3に基づいて最適なアイテム/アイテムを選択する必要があります。私たちは常に最大の項目を取らないように選択する必要があります。代わりに、私たちはあまり差がないアイテムを取る。
input1: total items
input2: array of items
input3: items to be selected
Scenario 1:
input: 6, {44,55,605,100,154,190}, 1
output should be: {605}
input: 5, {15,85,32,31,2}, 2
output should be: {32,31}
私たちは選択する項目の数を増やすので、出力には最小の差異で選択された項目が増えます。 以下は私が試しているコードです。私はこの新しいことを助けてください: 私はこの動的な作り方に固執しています。
public static int[] Find(int totalItems, int[] values, int totalToBeSelected)
{
var i = values;
int[] results = new int[totalToBeSelected];
var resultList = new List<int>();
if (totalToBeSelected == 1)
{
resultList.Add(values.Max());
return resultList.ToArray();
}
Array.Sort(i);
var minmumDiff = (i[0] - i[1]) * -1;
for (int k = 1; k < i.Length; k++)
{
var differnce = i[k] - i[k - 1];
if (differnce < minmumDiff)
{
resultList.Add(i[k]);
resultList.Add(i[k - 1]);
minmumDiff = differnce;
}
}
return resultList.ToArray();
}
がTechgigからの質問のように見える、それはないですか? –
問題の実際の問題文を投稿できますか?入力からその出力をどのように得るのかははっきりしていません。また、あなたはあなたのコードにどのような入力を与えていますか、どのような出力を与え、どの出力をしたいですか?あなたは[mcve]を投稿できますか?デバッガでコードを踏んだり、プリントステートメントを追加して、期待していたものと異なるところを確認しましたか? – Dukeling
@Dukeling質問を更新しました。詳細情報が必要な場合はお知らせください ありがとう –