Program p = new Program(); Console.WriteLine("******************************组合数***********************************"); Console.WriteLine("请任意输入一个整数:"); string num = Console.ReadLine(); try { long.Parse(num); List<string> als = new List<string>(); als = p.GetData(string.Empty, num.Trim(), als); p.Display(als); Console.WriteLine("/nY-Enter:继续"); if (Console.ReadLine().Trim().ToLower() == "y") { Console.Clear(); Main(args); } } catch { Console.Clear(); Console.WriteLine("请输入数字!"); Main(args); } }
private List<string> GetData(String strBase, String strSel, List<string> alRet) { if (strSel.Length == 1) { string temp=strBase + strSel; if (!alRet.Contains(temp)&&!temp.StartsWith("0")) { alRet.Add(temp); } } else { for (int i = 0; i < strSel.Length; i++) { GetData(strBase + strSel.Substring(i, 1), strSel.Remove(i, 1), alRet); } } return alRet; }
public void Display(List<string> dals) { int i = 1; int a = dals.Count; if (a == 0) { Console.WriteLine("该数没有其他组合情况"); } else { Console.WriteLine("不同的组合数共有" + a + "个,如下"); foreach (string number in dals) { Console.Write(number + "/t"); if (i++ % 5 == 0) { Console.WriteLine(); } } } } } }