2009-12-25 9 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]); 
     } 

    } 

Je veux coder comme ceci string tmpS =+ list[i]; pour rejoindre le prochain élément de la liste.Imprimer la liste des articles

puis imprimer tmpS

mais compilez CS0023 d'erreur: l'opérateur '+' ne peut pas être appliqué à l'opérande de type 'string'.

Comment imprimer tous les éléments ci-dessous. (Toute sorte est ok)

A Aa Ab Aab Aba AB ABa ABb ABAB abba B Ba Bb Bab Bba

(Le nombre de majuscules Aucun swap. les petits caractères devraient être échangés. et suivez toujours les chiffres des majuscules. Ajoutez des petits caractères.)

+0

Etes-vous sûr que Aab doit être dans la section AB? – bniwredyc

+0

Bonjour. Aucune section différente. juste besoin de tous les èmes combinés ci-dessus. La liste a combiné ses articles et a combiné ses articles avec d'autres éléments de la liste. –

Répondre

3

ça fait longtemps que je n'ai pas travaillé sur un problème algorithmique pur!

Ce programme devrait faire l'affaire:

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; 
    } 
} 

Cordialement.


Ce programme vous donne cette sortie:

A Aa Aab Ab Aba AB ABa ABAB ABb abba B Ba Bab Bb Bba BA BAa BAAB BAB BABA un aA AAB aB aBA ab abA ABAB Abb abba b bA BAB bB Bba ba Baa BAAB BAB BABA

+0

@TheRHCP. J'ai testé plus d'itérations ajoutées pour List1 et List2, quand j'ajoute A, B, C pour List1; a, b, c pour List2; le script ne peut pas pirnt plus de 4 caractères (comme ABCabc/ACadc/ABCab ... ne peut pas être imprimé) Ce que je veux faire est de combiner toutes les conditions pour List1 et List2). Actuellement, seuls les NewString <= 4 caractères sont supportés. –

+0

L'algorithme que je vous brave ne peut pas gérer plus de 2 caractères par liste. Pour résoudre ceci, vous devez adapter la méthode GetCombinedItems. Je pense qu'il peut être facilement adapté, mais l'algorithme à implémenter est un peu plus complexe à concevoir car il doit gérer un nombre inconnu de caractères. En fait, cette méthode est juste de générer une liste de toutes les combinaisons possibles des caractères, je pense que vous pouvez trouver ce genre d'algortihm sur Internet. – Ucodia

3

Cela sent le devoir.

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

Bonjour Slugster, Suivez-vous guide. J'ai trouvé que certains objets ne peuvent toujours pas être imprimés. –

3

Il est += pas =+.

Mais vous devez quand même utiliser un StringBuilder.

Questions connexes