Saman_12
سه شنبه 10 تیر 1393, 07:27 صبح
سلام.
میخوام تمام حالات چیدن چند تا حرف کنار هم رو داشته باشم و تکرارم مجازه :
private List<string> GetPossiblePass(List<string> datalist, Int32 count)
{
List<string> passlist = new List<string>();
List<string> newpasslist = new List<string>();
_getpossiblepass(datalist, count, ref passlist);
foreach (object item_loopVariable in passlist) {
item = item_loopVariable;
if (item.Length == count && !newpasslist.Contains(item))
newpasslist.Add(item);
}
return (newpasslist);
}
private void _getpossiblepass(List<string> datalist, Int32 count, ref List<string> passlist)
{
if (passlist.Count == 0) {
foreach (object ichar_loopVariable in datalist) {
ichar = ichar_loopVariable;
passlist.Add(ichar);
_getpossiblepass(datalist, count, ref passlist);
}
} else {
string newdata = null;
foreach (object ichar_loopVariable in datalist) {
ichar = ichar_loopVariable;
for (Int32 i = 0; i <= passlist.Count - 1; i++) {
newdata = passlist[i] + ichar;
if (newdata.Length <= count) {
passlist.Add(newdata);
if (newdata.Length < count)
_getpossiblepass(datalist, count, ref passlist);
}
}
}
}
}
List<string> charlist = new List<string>();
charlist.AddRange({
"a",
"b"
});
List<string> passlist = GetPossiblePass(charlist, 3);
foreach (object item_loopVariable in passlist) {
item = item_loopVariable;
Console.WriteLine(item);
}
ولی کار نمیکنه و خطا میده مثل اینکه برنامه افتاده باشه تو یه حلقه نامتناهی!
میخوام تمام حالات چیدن چند تا حرف کنار هم رو داشته باشم و تکرارم مجازه :
private List<string> GetPossiblePass(List<string> datalist, Int32 count)
{
List<string> passlist = new List<string>();
List<string> newpasslist = new List<string>();
_getpossiblepass(datalist, count, ref passlist);
foreach (object item_loopVariable in passlist) {
item = item_loopVariable;
if (item.Length == count && !newpasslist.Contains(item))
newpasslist.Add(item);
}
return (newpasslist);
}
private void _getpossiblepass(List<string> datalist, Int32 count, ref List<string> passlist)
{
if (passlist.Count == 0) {
foreach (object ichar_loopVariable in datalist) {
ichar = ichar_loopVariable;
passlist.Add(ichar);
_getpossiblepass(datalist, count, ref passlist);
}
} else {
string newdata = null;
foreach (object ichar_loopVariable in datalist) {
ichar = ichar_loopVariable;
for (Int32 i = 0; i <= passlist.Count - 1; i++) {
newdata = passlist[i] + ichar;
if (newdata.Length <= count) {
passlist.Add(newdata);
if (newdata.Length < count)
_getpossiblepass(datalist, count, ref passlist);
}
}
}
}
}
List<string> charlist = new List<string>();
charlist.AddRange({
"a",
"b"
});
List<string> passlist = GetPossiblePass(charlist, 3);
foreach (object item_loopVariable in passlist) {
item = item_loopVariable;
Console.WriteLine(item);
}
ولی کار نمیکنه و خطا میده مثل اینکه برنامه افتاده باشه تو یه حلقه نامتناهی!