【问题标题】:Calculate the nth permutation of an array of characters using c#使用c#计算字符数组的第n个排列
【发布时间】:2012-10-06 11:40:52
【问题描述】:

我想用c#写一个方法,计算一个字符数组的第n个排列,不使用递归函数返回一个第n个排列的字符数组。
例如

If the array is ABC the second permutation is ACB.任何人都可以帮助我

【问题讨论】:

  • 首先尝试自己并粘贴您的代码..
  • 这是我的递归代码:
  • 类置换 { int k=0,i=0;私人无效交换(ref char a,ref char b){ char temp;温度=b; b=a;一个=温度; }private void go(char[] list, int position,int m)//m是数组的长度-1 { int i; if (k == m) { if( i ==position ){ Console.Write (list); Console.WriteLine(""); }否则我++; } else for (i = k; i
  • 我尝试在屏幕上打印特定排列

标签: c# permutation


【解决方案1】:

不够清楚您的置换逻辑是什么,无法为非递归算法提供帮助。

如果你想避免递归函数,我们可以循环运行处理逻辑 N 次。

public string GetPermutation(int n, string source)
        {

            for (int i = 0; i < n; i++)
            {
                //modify source
            }
            return source;
        }

【讨论】:

    【解决方案2】:

    字典排列算法通常不是递归的。这个页面有一个 c# 变体,可以快速获得第 N 个排列

    http://www.mathblog.dk/project-euler-24-millionth-lexicographic-permutation/

    【讨论】:

      【解决方案3】:

      good project on codeproject.com 关于有或没有重复的排列和变化。我猜你需要没有重复的排列。

      【讨论】:

        猜你喜欢
        • 2023-03-13
        • 1970-01-01
        • 2019-01-15
        • 2011-12-16
        • 2020-08-01
        • 1970-01-01
        • 2012-02-08
        相关资源
        最近更新 更多