2015-10-06 2 views
-8

У меня есть список из 10 элементов. Я пытаюсь вывести на консоль все возможные спаривания 2. Но он не может соединяться с самим собой. Например 1,2 1,3 1,4 и т. Д.Соберите все возможные комбинации из 2 из списка

Я нашел это, чтобы найти все возможные комбинации в списке. Может кто-нибудь помочь мне изменить его, пожалуйста?

private static void GetCombination(IList list) 
    { 
     var count = Math.Pow(2, list.Count); 
     for (var i = 1; i <= count - 1; i++) 
     { 
      var str = Convert.ToString(i, 2).PadLeft(list.Count, '0'); 
      for (var j = 0; j < str.Length; j++) 
      { 
       if (str[j] == '1') 
       { 
        Console.Write(list[j]); 
       } 
      } 
      Console.WriteLine(); 
     } 
    } 
+0

использование Google Посмотрите, как легко найти решение прийти сейчас .. [C# Bubble Сортировка] (http://www.c-sharpcorner.com/UploadFile/3d39b4/bubble-sort-in- C-Sharp /) – MethodMan

+0

Я никогда не говорил, что не знаю, что делает код, который я опубликовал. Введенный код состоит в том, чтобы получить ВСЕ комбинации из объекта списка. Я пытаюсь получить все комбинации в парных количествах X, т. Е. В парных числах 2, поэтому выход будет ... 1,2 1,3, 1,10 – Andy

+0

ваш код изначально дал бы 'var count = Math.Pow (2, list.Count); 'значение count должно быть' 1024.0', которое не имеет ничего общего с тем, что должно быть сделано без повторения значений. 'FirstOne' дал вам отправную точку, которая требует 1 или 2 дополнений надеюсь, вы можете быстро выяснить, что нужно добавить – MethodMan

ответ

1

Так что, если у вас есть список с 1 до 10, вам нужно 1,21,31,4 ... 1,10 - 2,12,3 .. 2,10 и так далее. Вам просто нужно использовать пузырь и проверить, отличается ли первый индекс от второго.

Для получения более разъяснений, вот пример:

List<int> mylist = new List<int>(new int[] { 1,2,3,4,5,6,7,8,9 }); 
GetCombination(mylist); 


private static void GetCombination(IList<int> values) 
{ 
    for (int i = 0; i < values.Count; i++) 
    { 
     for (int j = 0; j < values.Count; j++) 
     { 
      if (i != j) 
      { 
       Console.WriteLine(values[i] + " " + values[j]); 
      } 
     } 
    } 
} 
+0

, что правильно – Andy

+1

@ Andy Если вы чувствуете, что застряли в чем-то, попробуйте разделить проблему на шаги и, возможно, даже шаг за шагом. Вы можете отлаживать, если хотите. Еще один совет - выяснить, что вам нужно делать независимо от языка программирования и только тогда, кода. Так или иначе. если это ответ, который вы ищете, не забудьте принять его и проголосовать. – FirstOne

0

Это такой простой question.Adding к ответу @FirstOne вы также можете вернуть список, содержащий все комбинации из функции: Список mylist = новый Список (новый int [] {1,2,3,4,5,6,7,8,9}); GetCombination (mylist);

public static IList<Tuple<int,int>> GetCombination(IList<int> values) 
    { 
     List<Tuple<int,int>> _temp=new List<Tuple<int, int>>(); 
     for (int i = 0; i < values.Count; i++) 
     { 
      for (int j = 0; j < values.Count; j++) 
      { 
       if (i != j) 
       { 
        _temp.Add(Tuple.Create(i, j)); 
       } 
      } 
     } 
     return _temp; 
    } 
Смежные вопросы