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

    } 

Desidero codificare come questo string tmpS =+ list[i]; per partecipare al prossimo elemento della lista insieme.Stampa voci elenco

quindi stampare tmpS

ma Errore di compilazione CS0023: operatore '+' non può essere applicato a operandi di tipo 'stringa'.

Come stampare tutti gli elementi sottostanti. (Qualsiasi tipo è ok)

Un Aa Ab Aab Aba AB ABA ABB abab Abba B Ba Bb Bab Bba

(Numero maiuscoletto scambio. i piccoli personaggi dovrebbero essere scambiati. e segui sempre Numeri maiuscoli Aggiungi caratteri piccoli.)

+0

Sei sicuro di quello Aab deve essere nella sezione AB? – bniwredyc

+0

Ciao. Nessuna sezione diversa. ho solo bisogno di tutti gli elementi combinati sopra. La lista combinava i suoi oggetti e combinava i suoi oggetti con altri oggetti della lista. –

risposta

3

fa molto tempo non ho lavorato su un puro problema algoritmico!

Questo programma dovrebbe fare il trucco:

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

saluti.


Questo programma ti dà questo output:

Un Aa Aab Ab Aba AB ABA abab ABB Abba B Ba Bab Bb Bba BA BAa BAAB anticorpi leganti Baba un aA aab aB ABA ab ABA ABAB ABB abba b bA BAB bB BBA ba BAA BAAB BAB Baba

+0

@TheRHCP. Ho testato più itmes aggiunti per List1 e List2, quando aggiungo A, B, C per List1; a, b, c per List2; lo script non può Pirnt più di 4 caratteri. (Come ABCabc/ACadc/ABCab ... non può essere stampato. Quello che voglio fare è combinare tutte le condizioni per List1 e List2). Attualmente supportano solo NewString <= 4 caratteri. –

+0

L'algoritmo che ti ho dato non può gestire più di 2 caratteri per lista. Per risolvere questo problema devi adattare il metodo GetCombinedItems. Penso che possa essere facilmente adattato, ma l'algoritmo da implementare è un po 'più complesso da progettare perché deve gestire un numero imprecisato di caratteri. In realtà questo metodo sta solo generando un elenco di tutte le possibili combinazioni dei caratteri, penso che tu possa trovare questo tipo di algortihm su Internet. – Ucodia

3

Questo odora di compiti a casa.

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

Ciao Slugster, segui la guida. ho trovato che alcuni oggetti non possono ancora essere stampati. –

3

E '+= Non =+.

Tuttavia, è necessario utilizzare un oggetto StringBuilder.