- /*----------------------------------------*/
- //Author:旋风
- //Date:2008-09-13 19:02:51
- //Version:V1.0
- //Memo: 排列出所有不相同且无重复数字的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");//输出
- }
- }
C# 排列出所有不相同且无重复数字的N位数
最新推荐文章于 2021-10-31 00:00:00 发布