2009-12-25 3 views
7
List<string> list = new List<string>();  
     list.Add("A"); 
     list.Add("B"); 

List<string> list1 = new List<string>();  
     list.Add("a"); 
     list.Add("b"); 


    for (int i = 0; i < list.Count; i++) 
    { 
     // print another list items. 
     for (int j = 0; j < list1.Count; j++) 
     { 
      Console.WriteLine("/" + list[i] + "/" + list1[j]); 
     } 

    } 

Я хочу написать код следующим образом: string tmpS =+ list[i]; Присоединиться к следующей статье.Распечатать список товаров

затем распечатать tmpS

но компилировать CS0023 ошибки: Оператор «+» не может быть применен к операнд типа «строка».

Как печатать все ниже пункты. (Любой вид нормально)

Aa Ab Aab Аба AB ABA Abb ABAB ABBA B Ba Bb Баб Bba

(Номер Кол-во Без обмена. маленькие символы должны быть заменены. и всегда следуйте за Caps Numbers. Добавьте небольшие символы.)

+0

Вы уверены, что Aab должен быть в разделе AB? – bniwredyc

+0

Здравствуйте. Никаких разделов не отличается. просто нужно, чтобы все объединенные темы были выше. Список объединил его предметы и объединил его предметы с элементами списка antoher. –

ответ

3

Это долгое время, я не работал над чистой алгоритмической проблемой!

Эта программа должна сделать трюк:

class Program 
{ 
    static void Main(string[] args) 
    { 
     List<string> uppers = new List<string>(); 
     uppers.Add("A"); 
     uppers.Add("B"); 

     List<string> lowers = new List<string>(); 
     lowers.Add("a"); 
     lowers.Add("b"); 

     List<string> combinedUppers = GetCombinedItems(uppers); 
     List<string> combinedLowers = GetCombinedItems(lowers); 
     List<string> combinedUppersLowers = GetCombinedList(combinedUppers, combinedLowers); 

     foreach (string combo in combinedUppersLowers) 
     { 
      Console.WriteLine(combo); 
     } 

     Console.Read(); 
    } 

    static private List<string> GetCombinedItems(List<string> list) 
    { 
     List<string> combinedItems = new List<string>(); 

     for (int i = 0; i < list.Count; i++) 
     { 
      combinedItems.Add(list[i]); 

      for (int j = 0; j < list.Count; j++) 
      { 
       if (list[i] != list[j]) 
       { 
        combinedItems.Add(String.Format("{0}{1}", list[i], list[j])); 
       } 
      } 
     } 

     return combinedItems; 
    } 

    static private List<string> GetCombinedList(List<string> list1, List<string> list2) 
    { 
     List<string> combinedList = new List<string>(); 

     for (int i = 0; i < list1.Count; i++) 
     { 
      combinedList.Add(list1[i]); 

      for (int j = 0; j < list2.Count; j++) 
      { 
       combinedList.Add(String.Format("{0}{1}", list1[i], list2[j])); 
      } 
     } 

     for (int i = 0; i < list2.Count; i++) 
     { 
      combinedList.Add(list2[i]); 

      for (int j = 0; j < list1.Count; j++) 
      { 
       combinedList.Add(String.Format("{0}{1}", list2[i], list1[j])); 
      } 
     } 

     return combinedList; 
    } 
} 

С уважением.


Эта программа дает вам этот вывод:

Аа Aab Ab Аба AB ABA ABAB Abb ABBA B Ba Баб Bb BBA BA BAa Baab Bāb Baba аА аАВ аВ ABA AB ABA ABAB Abb ABBA б ЪА Bāb ЬВ BBA ба BAA Baab Bāb Baba

+0

@ THERHCP. Я тестировал больше itmes, добавленных как для List1, так и для List2, когда я добавляю A, B, C для List1; a, b, c для List2; сценарий не может содержать Pirnt более 4 символов (например, ABCabc/ACadc/ABCab ... невозможно распечатать. Что я хочу сделать, это объединение всех условий для List1 и List2). В настоящее время поддерживается только NewString <= 4 символа. –

+0

Алгоритм, в котором я храбраю, не может обрабатывать более двух символов по списку. Чтобы решить эту проблему, вы должны адаптировать метод GetCombinedItems. Я думаю, что это можно легко вписать, но алгоритм для реализации немного сложнее в дизайне, потому что он должен обрабатывать неизвестное количество символов. На самом деле этот метод просто генерирует список всех возможных комбинаций персонажей, я думаю, вы можете найти такого рода algortihm в Интернете. – Ucodia

3

Это пахнет домашней работой.

List<string> list = new List<string>();  
list.Add("A"); 
list.Add("B"); 

List<string> list1 = new List<string>();  
list.Add("a"); 
list.Add("b"); 

string xxx = ""; 
for (int i = 0; i < list.Count; i++) 
{ 
    xxx += list[i]; 
    Console.WriteLine(xxx); 

    // print another list items. 
    for (int j = 0; j < list1.Count; j++) 
    { 
     Console.WriteLine("/" + list[i] + "/" + list1[j]); 
    } 

} 
+0

Привет, Слезстер, Следуйте за вами. Я обнаружил, что некоторые элементы по-прежнему не могут быть напечатаны. –

3

Это += не =+.

Но вы все равно должны использовать StringBuilder.

Смежные вопросы