PDA

View Full Version : سوال: مشاوره در خصوص پیاده سازی الگوریتم



mvardin
دوشنبه 16 آذر 1394, 21:26 عصر
سلام
137314
عکس فوق رو میخام به صورت عبارت های زیر خروجی بگیرم

ABCDE
ABCDE1
ABCD1E
ABCD1E1

به صورت خلاصه تمام جایگشت هاش رو میخام چاپ کنم
به صورت بازگشتی تلاش کردم ولی نتونستم
در صورتی که دوستان می تونن ممنون میشم کمک کنن
تشکر فراوان

rahnema1
سه شنبه 17 آذر 1394, 18: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;
}
}
}