递归的再度思索-多个数组路劲遍历

类型:

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 = listStr.FindAll(x => x != listStr[0]);
                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;
        }

递归的再度思索-多个数组路劲遍历

时间: 2024-11-05 12:26:06

递归的再度思索-多个数组路劲遍历的相关文章

问答项目---递归重新排序无限极子分类数组

递归重新排序无限极子分类数组方法: // 递归重新排序无限极子分类数组 function recursive($array,$pid=0,$level=0){ $arr = array(); foreach ($array as $v) { if($v['pid'] == $pid){ $v['level'] = $level; $v['html'] = str_repeat('--',$level); $arr[] = $v; $arr = array_merge($arr,recursive

JavaScript 递归法排列组合二维数组2

<html> <head> <title>二维数组排列组合</title> </head> <body> <div id="showDiv"></div> </body> <script type="text/javascript"> var arrays = [ [ '1-1-雨尘', '1-2-芸芸', '1-3-简一', '1-4-乐乐' ]

JavaScript 递归法排列组合二维数组

<html> <head> <title>二维数组排列组合</title> </head> <body> <div id="showDiv"></div> </body> <script type="text/javascript"> var arrays = [ [ '1-1-雨尘', '1-2-芸芸', '1-3-简一', '1-4-乐乐' ]

将树形结构的数组按照顺序遍历为二维数组

/** * 将树形结构的数组按照顺序遍历为二维数组 * renxing,2015年8月7日 11:06:47 */ function arr_child ($array) { static $res; if (!is_array($array)) { return false; } foreach ($array as $k=>$v) { if (is_array($v) && isset($v['child'])) { $child = $v['child']; //将这个数组的子

classpath路劲

1.指的是tomcat下的web-if下的classes路劲 2. 发布时,红框中的文件全都会放到classes下,并且如果出现重名,下面的有可能会覆盖上面的文件

安卓读写文件和路劲注意事项

写文件: private void writeToLocal(String filesString,String content,int mode) { try { FileOutputStream fisStream=openFileOutput(filesString,mode); fisStream.write(content.getBytes()); fisStream.flush(); fisStream.close(); } catch (Exception e) { // TODO

RMAN异机恢复到不同的路劲下

1.全库备份,scp到异机目录下  查询源库的DBID:   SQL> select dbid,name from v$database; DBID NAME ---------- ---------  439840715 YIJI SQL>    异机建立dump目录.oradata下建立SID名对应目录  2.恢复spfile,启动到nomount:       export ORACLE_SID=yiji    rman target /    set dbid=439840715   

C语言 数组做函数参数不传数组个数的遍历方法

//数组做函数参数不传数组个数的遍历方法 #include<stdio.h> #include<stdlib.h> #include<string.h> void PrintfAK(char **pin){ int i = 0; //关键点:pin[i]!=NULL为终止条件 for (i = 0; pin[i]!=NULL; i++) { printf("%s\n", pin[i]); } } void main(){ //赋值数组最后一个元素是0

引用的时候js不能使用虚拟路劲,调试时用排除法测试

今天碰到2个问题,搞了半天都没明白,又不报错: 就是js的问题:-->我返回了一个json,返回的json是正确的,但是view页面接受不到这个虚拟对象. 完全懵了,不知道为什么view页面接受不到这个json,调试也没反应,根本走不了调试,后来请教了大神. 他通过重新写了一个简单的js,然后测试,还是有问题,那只能是引用的问题了,但是这个项目别人也是引用的这个js都没有问题, 所以只能是“引用的时候js不能使用虚拟路劲!” 最重要的是js排除法:即先写一个简单的js测试.