从0到n的排列的一种求法
来源:互联网 发布:中兴通软件序列号 编辑:程序博客网 时间:2024/05/09 03:32
从0到n的排列的一种求法(效率低,急需改进)
用到了split和backgroundWorker。textbox用来接收输入,lixtbox输出。button开始计算。
private void button1_Click(object sender, EventArgs e)
{
int needtocal = int.Parse(textBox1.Text);
backgroundWorker1.RunWorkerAsync(needtocal);
}
//计算
public string CalPermutation(int n)
{
string result = "";
if (n < 0) return "";
if (n == 0)
{
result = "0";
}
else if (n == 1)
{
result = "01,10";
}
else
{
string last = CalPermutation(n - 1);
string delimStr = ",";
char[] delimiter = delimStr.ToCharArray();
string[] split = null;
split = last.Split(delimiter);
foreach (string s in split)
{
for (int i = 0; i < n + 1; i++)
{
if (result != "")
result += ",";
result += s.Insert(i, n.ToString());
}
}
}
return result;
}
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
BackgroundWorker worker = sender as BackgroundWorker;
e.Result = CalPermutation((int)e.Argument);
}
private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
// First, handle the case where an exception was thrown.
if (e.Error != null)
{
MessageBox.Show(e.Error.Message);
}
else
{
// handle the case where the operation
// succeeded.
string delimStr = ",";
char[] delimiter = delimStr.ToCharArray();
string[] split = null;
split = e.Result.ToString().Split(delimiter);
foreach (string ss in split)
{
listBox1.Items.Add(ss);
}
}
}
- 从0到n的排列的一种求法
- C# 一种数列的求法
- 将从1到n*n的n的平方个数,按顺时针方向从小到大排列成阵列
- 输出从1~n的全排列
- 1到n的全排列
- 1到n的全排列实现
- 输出 1 到 n 的全排列
- 1到n的所有排列情况
- ACM-有一个数n(0<n<10),写出1到n的全排列
- C++实现统计从1到n中1出现的次数(另外一种方法)
- N!最后一位非0位的求法
- DFS的理解,从排列到组合
- 关于1!+2!+......+n!的求法
- 找出1到n所有不重复的排列,即n的全排列。
- 从M中选N的所有排列 算法
- 从m个数中选n个数的排列
- 从N个数选择M个数的排列
- n个数的排列
- JavaScript:世界上误解最深的语言
- J2ME开发站点资源
- 如何去掉 Dev cxGrid
- 关于Linux AT&T Asm的零星小结
- 一个清爽便利的Windows游戏窗口
- 从0到n的排列的一种求法
- JNI设计实践之路
- python学习笔记2
- 一个简单的tomcat部署方案
- 请高手改一下“教职工管理信息系统”程序(有1个错误)
- 循环报数问题
- 关于Asp程序的Server.CreateObject错误解决方法
- ASP操作Excel技术总结
- [分享]Linux系统初学者的常见问题解决集结大全