yeah,组合的也出来了,再一起发一个 using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace ConsoleApplication32{ class Program { static int s = 0; static void Main(string[] args) { Console.WriteLine("输入要排列的数字"); string strs = Console.ReadLine(); List<string> list = new List<string>(); int a = 5; Console.WriteLine("输入要排列的个数"); int b = Int32.Parse(Console.ReadLine()); Compages(strs, "", list, b); Console.WriteLine("_______________________________________"); for (int i = 0; i < list.Count; i++) { Console.WriteLine(list[i]); } Console.WriteLine("共:"+s+"个"); Console.Read(); } /// <summary> /// 数学排列算法P(N,M) /// </summary> /// <param name="num">需要排列的字符串</param> /// <param name="curnum"></param> /// <param name="list">排列出的字符串集合</param> /// <param name="n">需要排列的个数</param> public static void Compute( string num,string curnum,List<string> list,int n) { for (int i = 0; i < num.Length; i++) { curnum+= num[i].ToString(); if (curnum.Length == n) { list.Add(curnum); s++; } else { string temp = num.Remove(i, 1); Compute(temp,curnum,list,n); } curnum = curnum.Remove(curnum.Length - 1, 1); } } /// <summary> /// 数学组合算法 C(n,m) /// </summary> /// <param name="num">要组合的字符串</param> /// <param name="curnum"></param> /// <param name="list">组合后的集合</param> /// <param name="n">要组合的个数</param> public static void Compages(string num,string curnum,List<string> list,int n) { for (int i = 0; i < num.Length; i++) { curnum += num[i].ToString(); if (curnum.Length == n) { if (list.Count > 0) { foreach (string item in list) { if (!CheckContrains(list,curnum)) { list.Add(curnum); s++; break; } } } else { list.Add(curnum); s++; } } else { string temp = num.Remove(i, 1); Compages(temp, curnum, list, n); } curnum = curnum.Remove(curnum.Length - 1, 1); } } /// <summary> /// 判断两个字符串是否含有相同的字符 /// </summary> /// <param name="item"></param> /// <param name="curnum"></param> /// <returns></returns> private static bool CheckEquesl(string item, string curnum) { bool flag=true; for (int i = 0; i < curnum.Length; i++) { if (!item.Contains(curnum[i].ToString())) { flag = false; } } return flag; } /// <summary> /// 判断集合中是否包含与此字符串相同字符的字符串 /// </summary> /// <param name="list">要判断的集合</param> /// <param name="curnum">要比较的字符串</param> /// <returns></returns> private static bool CheckContrains(List<string> list, string curnum) { bool flag = false; foreach (string item in list) { for (int i = 0; i < curnum.Length; i++) { if (CheckEquesl(item,curnum)) { flag = true; } } } return flag; } }}using System;using Sy 你的当前访问异常,请进行认证后继续阅读剩余内容。 提交