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

    } 

Quiero hacer un código como este string tmpS =+ list[i]; para unirme al siguiente ítem de la lista togeter.Imprimir lista de elementos

a continuación, imprimir tmpS

pero compilación CS0023 de error: El operador '+' no se puede aplicar al operando de tipo 'cadena'.

Cómo imprimir todos los elementos siguientes. (Cualquier tipo está bien)

Un Aa Ab Aab Aba AB ABA ABb ABAB Abba B Ba Bb Bab Bba

(El número de Caps No swap. los pequeños caracteres deberían ser cambiados. y siempre siga los números de mayúsculas Agregue caracteres pequeños.)

+0

¿Estás seguro de que Aab debe estar en la sección AB? – bniwredyc

+0

Hola. No hay secciones diferentes. solo necesito todos los itmes combinados arriba. Lista combina sus elementos y combina sus artículos con otros artículos de la lista. –

Respuesta

3

¡hace mucho tiempo que no trabajé en un problema algorítmico puro!

Este programa debe hacer el truco:

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

Saludos.


Este programa le da este resultado:

Un 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. Probé más elementos agregados para List1 y List2, cuando agregué A, B, C para List1; a, b, c para List2; el guión no puede hacer Pirnt con más de 4 caracteres. (Como ABCabc/ACadc/ABCab ... no se puede imprimir. Lo que quiero hacer es combinar todas las condiciones para Lista1 y Lista2). Actualmente solo es compatible con NewString <= 4 caracteres. –

+0

El algoritmo que te di no puede manejar más de 2 caracteres por lista. Para resolver esto, debe adaptar el método GetCombinedItems. Creo que se puede adaptar fácilmente, pero el algoritmo para implementar es un poco más complejo de diseñar porque debe manejar un número desconocido de caracteres. De hecho, este método solo genera una lista de todas las combinaciones posibles de los caracteres, creo que puede encontrar este tipo de algoritmo en Internet. – Ucodia

3

Esto huele a tarea.

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

Hola Slugster, sigue tu guía. encontré algunos artículos que todavía no se pueden imprimir. –

3

Es += no =+.

Pero debe usar un StringBuilder de todos modos.

Cuestiones relacionadas