C#實現組合排列的方法
最近在做數據分析系統,里面涉及到組合排列的問題,查找了很多的資料,但是感覺很多資料都是比較零散的,達不到項目需求。
后來經過一段的時間的探索,終于實現了組合排列的功能。下面我就來簡單說說吧。
需求描述:
要實現的功能就是字符或數字的組合排列。例如:ab 的所有組合為:ab,ba ; ab的所有不重復排列為:ab。
其實這也是彩票中常說的直選和組選。效果圖如下:
功能實現
這里就不多說了,直接貼上實現代碼吧。
1.窗體界面
窗體界面設計入上面的截圖。
2.添加引用 在項目中,添加引用――>AoTu.ZhuHe.dll
3.窗體類代碼
public partial class FrmDemo : Form { public FrmDemo() { InitializeComponent(); } private void FrmDemo_Load( sender, EventArgs e) { string svn = "0b1de737-cea695ab-fc505423-bdd5f3db "; bool ret = ZhuHeNum.Initia(svn); if (!ret) MessageBox.Show("注冊失敗!"); } private void btnNot2_Click( sender, EventArgs e) { string str = txtnot.Text; List<string> list = ZhuHeNum.NumNoRepeAssembly(str, 2); if (list == null) { MessageBox.Show("注冊失?。?); return; } list.Sort(); StringBuilder sbBuilder = new StringBuilder(); foreach (string s in list) { sbBuilder.Append(s); sbBuilder.Append("/r/n"); } txtShow.Clear(); txtShow.Text = sbBuilder.ToString(); lbCount.Text = list.Count.ToString(); } private void btnNot3_Click( sender, EventArgs e) { string str = txtnot.Text; List<string> list = ZhuHeNum.NumNoRepeAssembly(str, 3); if (list == null) { MessageBox.Show("注冊失?。?); return; } list.Sort(); StringBuilder sbBuilder = new StringBuilder(); foreach (string s in list) { sbBuilder.Append(s); sbBuilder.Append("/r/n"); } txtShow.Clear(); txtShow.Text = sbBuilder.ToString(); lbCount.Text = list.Count.ToString(); } private void btnAll2_Click( sender, EventArgs e) { string str = txtAll.Text; List<string> list = ZhuHeNum.NumGroupAssembly(str, 2); if (list == null) { MessageBox.Show("注冊失?。?); return; } list.Sort(); StringBuilder sbBuilder = new StringBuilder(); foreach (string s in list) { sbBuilder.Append(s); sbBuilder.Append("/r/n"); } txtShow.Clear(); txtShow.Text = sbBuilder.ToString(); lbCount.Text = list.Count.ToString(); } private void btnAll3_Click( sender, EventArgs e) { string str = txtAll.Text; List<string> list = ZhuHeNum.NumGroupAssembly(str, 3); if (list == null) { MessageBox.Show("注冊失??!"); return; } list.Sort(); StringBuilder sbBuilder = new StringBuilder(); foreach (string s in list) { sbBuilder.Append(s); sbBuilder.Append("/r/n"); } txtShow.Clear(); txtShow.Text = sbBuilder.ToString(); lbCount.Text = list.Count.ToString(); } }
4.運行效果
結束語
至此,直選和組選功能就實現了。附上demo源碼供參考。
新聞熱點
疑難解答