mvardin
دوشنبه 16 آذر 1394, 22:26 عصر
سلام
137314
عکس فوق رو میخام به صورت عبارت های زیر خروجی بگیرم
ABCDE
ABCDE1
ABCD1E
ABCD1E1
به صورت خلاصه تمام جایگشت هاش رو میخام چاپ کنم
به صورت بازگشتی تلاش کردم ولی نتونستم
در صورتی که دوستان می تونن ممنون میشم کمک کنن
تشکر فراوان
rahnema1
سه شنبه 17 آذر 1394, 19:18 عصر
سلام
به این صورت بازگشتی:
using System.Collections.Generic;
using System;
namespace bazgasht
{
public class Program
{
public static void Main(string[] args)
{
List<List<string>> dic = new List<List<string>>
{
new List<string> {"A", "A1", "A2"},
new List<string> {"B", "B1"},
new List<string> {"C", "C1"},
new List<string> {"D", "D1", "D2"},
new List<string> {"E", "E1"}
};
var words = GenerateWords(dic);
foreach(var word in words) {
Console.WriteLine(word);
}
Console.ReadKey();
}
public static IEnumerable<string> GenerateWords(List<List<string>> dic, string[] buffer = null, int i = 0)
{
if(buffer == null) {
buffer = new string[dic.Count];
}
List<string> result = new List<string>();
if(i == dic.Count - 1) {
foreach(var word in dic[i]) {
buffer[i] = word;
result.Add(string.Concat(buffer));
}
} else {
foreach(var word in dic[i]) {
buffer[i] = word;
result.AddRange(GenerateWords(dic, buffer, i + 1));
}
}
return result;
}
}
}
vBulletin® v4.2.5, Copyright ©2000-1403, Jelsoft Enterprises Ltd.