遞迴的再度思索-多個數組路勁遍歷
阿新 • • 發佈:2018-11-24
型別:
1. SHA-AA/BA/KX/WC-NYC/TYO/OSA-BA/NX/CX-NYC
2. SHA -NYC/TYO/OSA -NYC
/之間區分的長度不一
想要的結果SHA-AA-NYC-BA-NYC
SHA-AA-NYC-NX-NYC
SHA-AA-NYC-CX-NYC
SHA-AA-NYC-CX-NYC
SHA-AA-TYO-BA-NYC
SHA-AA- TYO-NX-NYC
SHA-AA- TYO-CX-NYC
SHA-AA- TYO-CX-NYC
第一條有排列組合36種
思路
private void button1_Click(object sender, EventArgs e) { string txtOrg = textBox1.Text.Trim(); string[] t1 = txtOrg.Split('-'); //if ((t1.Length & 1) != 1) //{ // MessageBox.Show("錄入資料有問題"); // return; //} StringBuilder sb = new StringBuilder(""); GetStringRecursive(sb, "", t1.ToList()); textBox2.Text = "廣告位招租,欲去除請付我5元錢\r\n" + sb.ToString(); } private string GetStringRecursive(StringBuilder preBf, string pre, List<string> listStr) { //List<string> listRet = new List<string>(); string retStr = ""; if(listStr.Count == 0) return pre + "\r\n"; else{ List<string> listTmp = listStr[0].Split('/').ToList(); List<string> listTmp2 = new List<string>(); for (int i = 1; i <= listStr.Count - 1; i++) listTmp2.Add(listStr[i]);
bool isOver = listTmp2.Count == 0; for (int i = 0; i <= listTmp.Count - 1; i++) { string strTmp = listTmp[i].Trim(); //string[] = strTmp[i] retStr = pre + strTmp; //listStr.Remove() if (isOver) { preBf.Append(retStr + "\r\n"); } else { GetStringRecursive(preBf, retStr + '-', listTmp2); } } } return retStr; }