全排列算法的非递归实现
2014-05-11 18:14
239 查看
//本代码转自网络
long begintime = Environment.TickCount;
private void button6_Click(object sender, EventArgs e)
{
int slen = 4;//长度
int wlen = 3;//位数,<=长度
List<string> sarr = new List<string>();
for (int i = 1; i <= slen; i++)
{
sarr.Add(i.ToString());
}
string ts = string.Empty;
Random rad = new Random();
ArrayList al = new ArrayList();//数组
int len = 1;//总数
int tlen = slen - wlen + 1;//排列
while (slen >= tlen)
{
len = len * (slen--);
}
while (al.Count < len)
{
while (ts.Length < wlen)
{
string tmp = sarr[rad.Next(sarr.Count)];
if (ts.IndexOf(tmp) < 0)
ts += tmp;
}
if (!al.Contains(ts))
al.Add(ts);//添加
ts = "";
}
al.Sort();//排序
long endtime = Environment.TickCount;
long stime = endtime - begintime;//耗时
MessageBox.Show(string.Format("排列出{0}个不相同且无重复数字的{1}位数!/r/n耗时{2}毫秒", len, wlen, stime));
richTextBox1.Clear();
for (int i = 0; i < al.Count; i++)
{
richTextBox1.AppendText(al[i].ToString() + "/r/n");//输出
}
}
long begintime = Environment.TickCount;
private void button6_Click(object sender, EventArgs e)
{
int slen = 4;//长度
int wlen = 3;//位数,<=长度
List<string> sarr = new List<string>();
for (int i = 1; i <= slen; i++)
{
sarr.Add(i.ToString());
}
string ts = string.Empty;
Random rad = new Random();
ArrayList al = new ArrayList();//数组
int len = 1;//总数
int tlen = slen - wlen + 1;//排列
while (slen >= tlen)
{
len = len * (slen--);
}
while (al.Count < len)
{
while (ts.Length < wlen)
{
string tmp = sarr[rad.Next(sarr.Count)];
if (ts.IndexOf(tmp) < 0)
ts += tmp;
}
if (!al.Contains(ts))
al.Add(ts);//添加
ts = "";
}
al.Sort();//排序
long endtime = Environment.TickCount;
long stime = endtime - begintime;//耗时
MessageBox.Show(string.Format("排列出{0}个不相同且无重复数字的{1}位数!/r/n耗时{2}毫秒", len, wlen, stime));
richTextBox1.Clear();
for (int i = 0; i < al.Count; i++)
{
richTextBox1.AppendText(al[i].ToString() + "/r/n");//输出
}
}
相关文章推荐
- LeetCode:Permutations(全排列算法的递归与非递归实现)
- 全排列算法非递归实现和递归实现
- 全排列算法的递归与非递归实现
- 全排列算法的递归实现
- 全排列算法的递归与非递归实现
- 全排列算法-递归与字典序的实现方法(Java)
- 全排列算法的递归与非递归实现
- 全排列算法(字典序,递归实现)
- 递归实现全排列算法
- 【转】全排列算法非递归实现和递归实现
- 全排列算法【非递归活动数实现】
- 全排列算法(递归实现) 组合算法(递归,位运算实现)
- 全排列算法非递归实现和递归实现
- 全排列算法的递归思想及实现
- 全排列算法递归实现 C++
- 全排列算法的非递归实现与递归实现的方法(C++)
- 递归实现的全排列算法
- 归并排序的递归实现与非递归实现代码
- 快速排序的非递归实现
- 递归实现集合全排列