您的位置:首页 > 编程语言 > C#

C#实现“数学排列”的方法-----P(N,N)

2010-02-03 17:00 691 查看
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)
{
string strs = "12345";
List<string> list = new List<string>();
Compute(strs, "",list);
for (int i = 0; i < list.Count; i++)
{
Console.WriteLine(list[i]);
}
Console.WriteLine(s);
Console.Read();
}
/// <summary>
/// 数学排列
/// </summary>
/// <param name="num"></param>
/// <param name="curnum"></param>
public static void  Compute( string num,string curnum,List<string> list)
{
for (int i = 0; i < num.Length; i++)
{
curnum+= num[i].ToString();
if (num.Length == 1)
{
list.Add(curnum);
s++;
}
else
{
string temp=num.Replace(num[i].ToString(),"");
Compute(temp,curnum,list);
curnum= curnum.Remove(curnum.Length - 1, 1);
}
}
}

}
}


昨天在JAVA区看到一个类似求数学组合的算法问题,想了想还挺难,没什么思路,随便搜了一下,还真有专门算这个算法,是用“回溯法”,今天下午没事,就自己写了个算法,实现了P(R,R)的排列问题,组合回来再写吧
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: