我想使用C#即计算字符数组的第n个排列,并返回第n个排列的字符数组,而无需使用递归函数来写一个方法的字符数组的第n个排列。
例如计算使用C#
If the array is ABC the second permutation is ACB
。任何一个可以帮助我
我想使用C#即计算字符数组的第n个排列,并返回第n个排列的字符数组,而无需使用递归函数来写一个方法的字符数组的第n个排列。
例如计算使用C#
If the array is ABC the second permutation is ACB
。任何一个可以帮助我
不太清楚你的排列逻辑就是提供在非递归算法的帮助。
如果你想避免递归函数,我们运行于处理逻辑N次的循环。
public string GetPermutation(int n, string source)
{
for (int i = 0; i < n; i++)
{
//modify source
}
return source;
}
字典排列算法通常不是递归的。这个页面有一个办法一个C#变种得到快速的第N个排列
http://www.mathblog.dk/project-euler-24-millionth-lexicographic-permutation/
有good project on codeproject.com关于置换和变化有或没有重复。我想你需要在排列没有重复。
在第一次尝试自己和粘贴代码.. –
这是我的代码递归: – user1725012
类置换 { INT K = 0 i = 0; 私人无效掉(参见焦炭一个,参考字符B) { 炭温度; \t \t temp = b; \t \t \t \t \t \t b = a; \t \t \t \t \t \t a = temp; }私人无效去(CHAR []列表,INT位置,INT米)// m是阵列-1 { INT I的长度; 如果(K ==米) { 如果(I ==位置){ Console.Write(列表); Console.WriteLine(“”); } else i ++; (i = k; i <= m; i ++) } else go(list,k + 1,m); swap(ref list [k],ref list [i]); }} } 我 – user1725012