# 从0到n的排列的一种求法

879人阅读 评论(0)

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
0

* 以上用户言论只代表其个人观点，不代表CSDN网站的观点或立场
个人资料
• 访问：311489次
• 积分：4310
• 等级：
• 排名：第7291名
• 原创：79篇
• 转载：33篇
• 译文：55篇
• 评论：103条
文章分类
评论排行
最新评论