C#查找字符串所有排列组合的方法

本文实例讲述了C#查找字符串所有排列组合的方法。分享给大家供大家参考。具体实现方法如下:

// 1. remove first char
// 2. find permutations of the rest of chars
// 3. Attach the first char to each of those permutations.
// 3.1 for each permutation, move firstChar in all indexes
//   to produce even more permutations.
// 4. Return list of possible permutations.
public string[] FindPermutations(string word)
{
 if (word.Length == 2)
 {
  char[] _c = word.ToCharArray();
  string s = new string(new char[] { _c[1], _c[0] });
  return new string[]
  {
   word,
   s
  };
 }
 List<string> _result = new List<string>();
 string[] _subsetPermutations = FindPermutations(word.Substring(1));
 char _firstChar = word[0];
 foreach (string s in _subsetPermutations)
 {
  string _temp = _firstChar.ToString() + s;
  _result.Add(_temp);
  char[] _chars = _temp.ToCharArray();
  for (int i = 0; i < _temp.Length - 1; i++)
  {
   char t = _chars[i];
   _chars[i] = _chars[i + 1];
   _chars[i + 1] = t;
   string s2 = new string(_chars);
   _result.Add(s2);
  }
 }
 return _result.ToArray();
}

希望本文所述对大家的C#程序设计有所帮助。

(0)

相关推荐

  • C#实现排列组合算法完整实例

    排列组合是常见的数学问题,本文就以完整实例形式讲述了C#实现排列组合算法的方法.分享给大家供大家参考之用.具体方法如下: 首先,数学中排列组合,可表示为:排列P(N,R) 其实排列实现了,组合也就实现了,组合C(N,R)就是P(N,R)/P(R,R) ,实现这一功能比较简单的是递归算法,但考虑到递归的性能,下面采用了2种非递归的方法,具体代码如下 using System; using System.Collections.Generic; namespace Test { class Prog

  • C#组合函数的使用详解

    如下所示: 复制代码 代码如下: using System;using System.Collections.Generic;using System.Text;namespace ConsoleApplication1{ class Class1    {        static string[] str = { "A", "B", "C", "D", "E" };        static voi

  • C语言实现的排列组合问题的通用算法、解决方法

    尽管排列组合是生活中经常遇到的问题,可在程序设计时,不深入思考或者经验不足都让人无从下手.由于排列组合问题总是先取组合再排列,并且单纯的排列问题相对简单,所以本文仅对组合问题的实现进行详细讨论.以在n个数中选取m(0<m<=n)个数为例,问题可分解为: 1. 首先从n个数中选取编号最大的数,然后在剩下的n-1个数里面选取m-1个数,直到从n-(m-1)个数中选取1个数为止. 2. 从n个数中选取编号次小的一个数,继续执行1步,直到当前可选编号最大的数为m. 很明显,上述方法是一个递归的过程,也

  • C#组合模式实例详解

    本文实例讲述了C#组合模式.分享给大家供大家参考.具体如下: Company.cs如下: using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication1 { public abstract class Company { protected string name; public Company(string name) { t

  • 详解C#的排列组合

    排列组合的概念 排列:从n个不同元素中取出m(m≤n)个元素,按照一定的顺序排成一列,叫做从n个元素中取出m个元素的一个排列(Arrangement). 组合:从m个不同的元素中,任取n(n≤m)个元素为一组,叫作从m个不同元素中取出n个元素的一个组合. 排列组合实现代码 上一个项目做的一个水路的路径规划时,用到了排列的数据结构.求任意N个点里M个点的不同顺序的组合个数. 这样求最优路径.下面贴一段不知道哪里找的排列组合的算法. public class PermutationAndCombin

  • 使用php计算排列组合的方法

    前些天因为业务需要写了一段计算排列组合的代码,今天整理了一下,以备后用 复制代码 代码如下: <?php/** * 要解决的数学问题    :算出C(a,1) * C(b, 1) * ... * C(n, 1)的组合情况,其中C(n, 1)代表从n个元素里任意取一个元素 * * 要解决的实际问题样例:某年级有m个班级,每个班的人数不同,现在要从每个班里抽选一个人组成一个小组, *                       由该小组来代表该年级参加学校的某次活动,请给出所有可能的组合 *//*

  • C#查找字符串所有排列组合的方法

    本文实例讲述了C#查找字符串所有排列组合的方法.分享给大家供大家参考.具体实现方法如下: // 1. remove first char // 2. find permutations of the rest of chars // 3. Attach the first char to each of those permutations. // 3.1 for each permutation, move firstChar in all indexes // to produce even

  • js实现简单排列组合的方法

    本文实例讲述了js实现简单排列组合的方法.分享给大家供大家参考,具体如下: 运行效果截图如下: 具体代码如下: <!DOCTYPE html> <html> <head> <title>demo</title> <script type="text/javascript"> var str = [1,2,3,4,5]; var count = 0; function arrange(s){ for(var i=0,

  • Python使用combinations实现排列组合的方法

    好久没有写博客了!昨天小牛在上海举办了牛友见面会,现场优惠还是比较大,心仪已久加上一时脑热就入手了.以为会有多么开心,其实目前最大的感受就是焦虑!担心电动车被偷,担心电池被偷,担心路上突然被交警叔叔拦下!我想,直到我的小牛真的被偷的那天,这种焦虑才会随之消失.唉,要说这样的焦虑怎么来的,我只能呵呵了:) 下面步入正题: 今天在帮我们家王博处理专利数据的时候,需要对专利数据中的城市和专利主体的合作关系数量进行统计.一项专利其写作主体可能由两个或两个以上主体参与,各个主体又分属不同或者相同的城市,对

  • Java排列组合字符串的方法

    例如 输入"abc",打印所有可能出现的组合情况,并且消除重复值. 所谓排列组合如下: 排列组合,字符串:abc bca acb abc cba bac cab 排列组合个数:6 实现代码(结合Java8 lambda表达式实现) import org.junit.Test; import java.util.ArrayList; import java.util.HashSet; import java.util.List; public class test2 { @Test pu

  • Java实现abc字符串排列组合

    1.可重复排列:abc三个字符组成的所有长度为3的字符串,aaa,aab,aac......ccc 一共27种 利用递归的思想,第一个字符可以从abc中选择一个,三种选择,之后问题转化为abc组成长度为2的字符的情况,循环递归后可以求出所有的可能.控制好循环退出条件即可. 利用递归可以处理,不知道字符长度的情况下,即通用处理.如果知道长度,只需要利用多层循环,也可以得出结论. public class Permutation { public static void main(String[]

  • 关于各种排列组合java算法实现方法

    一.利用二进制状态法求排列组合,此种方法比较容易懂,但是运行效率不高,小数据排列组合可以使用 复制代码 代码如下: import java.util.Arrays; //利用二进制算法进行全排列//count1:170187//count2:291656 public class test {    public static void main(String[] args) {        long start=System.currentTimeMillis();        count

  • Golang排列组合算法问题之全排列实现方法

    本文实例讲述了Golang排列组合算法问题之全排列实现方法.分享给大家供大家参考,具体如下: [排列组合问题] 一共N辆火车(0<N<10),每辆火车以数字1-9编号,要求以字典序排序输出火车出站的序列号. 输入: 包括N个正整数(0<N<10),范围为1到9,数字之间用空格分割,字符串首位不包含空格. 输出: 输出以字典序排序的火车出站序列号,每个编号以空格隔开,每个输出序列换行. 样例输入: 1 2 3 样例输出: 1 2 3 1 3 2 2 1 3 2 3 1 3 1 2 3

  • php通过排列组合实现1到9数字相加都等于20的方法

    本文实例讲述了php通过排列组合实现1到9数字相加都等于20的方法.分享给大家供大家参考.具体实现方法如下: <?php set_time_limit(0); /* 函数说明:huoqu_zhuhe($eq,$jiashu,$isone=0) 参数说明:$eq---几个数相加的总和: $jiashu-------加数数组:$jiashu=array(1,2,3,4,5,6,7,8,9),可以使用的加数: $isone---是否要每次使用不同的加数,唯一性,1是 0 不,默认1 返回类型:数组,数

  • python求一个字符串的所有排列的实现方法

    题目描述: 设计一个程序,当输入一个字符串时,要求输出这个字符串的所有排列. 例如输入字符串 abc,要求输出由字母 a.b.c 所能排列出来的所有字符串 abc,acb,bac,bca,cab,cba. 方法:递归法 以字符串 abc 为例介绍对字符串进行全排列的方法. (1) 首先固定第一个字符 a,然后对后面的两个字符 b.c 进行全排列: (2) 交换第一个字符与其后面的字符,即交换 a 与 b,然后对后面的两个字符 a与c 进行全排列: (3) 由于第二步交换了 a与b 破坏了字符串原

随机推荐