听说很好解,可惜偶没算法基础,想了快1个小时了无解,请高手帮个忙,谢谢!如 string[] strs = {"X1","X2","X3","X4","X5","X6"};这个算法要能够获取这几个字符串的所有任意组合。多谢!

解决方案 »

  1.   

    下面是我刚回复的一个贴子,跟你的问题差不多,你参考一下吧。
    http://topic.csdn.net/u/20080119/16/bc1c88fe-3b4c-4495-99e1-7b05166a8875.html
      

  2.   

    http://topic.csdn.net/u/20080115/22/ab03ef9f-d785-41c3-9d83-da6cead94356.html
      

  3.   

    参考这里(http://dgpck.blogdriver.com/dgpck/1255953.html )的方法,自己写了一个:
    private static char[] CheckRedLine(int signal){

    string redLine = ""; string[] xs = "1,2,3,4,5,6".Split(',');  //线
    int[]    ns = {1,2,4,8,10,20};                 //信号 switch(signal){

    case 0:
    break;
    case 1:
    redLine = "1";
    break;
    case 2:
    redLine = "1";
    break;
    case 4:
    redLine = "3";
    break;
    case 8:
    redLine = "4";
    break;
    case 10:
    redLine = "5";
    break;
    case 20:
    redLine = "6";
    break;
    default://其它数字可能是多条线的组合 ArrayList temps = new ArrayList();
    ArrayList ints  = new ArrayList(); for(int i=0;i<xs.Length;i++){

    ArrayList temp    = temps; temps.Add(xs[i]);
    ints.Add(ns[i]); bool ish = false; for(int j=0;j<temp.Count;j++){ string tempStr = temp[j].ToString() + xs[i]; int    tempInt = Int32.Parse(ints[j].ToString()) + ns[i]; if(signal == tempInt){
    ish = true;
    redLine = tempStr;
    break;
    } temps.Add(tempStr);
    } if(ish){
    break;
    }
    } break;
    } return redLine.ToCharArray();
    }
      

  4.   

    private static char[] CheckRedLine(int signal){

    string redLine = ""; string[] xs = "1,2,3,4,5,6".Split(',');  //线
    int[]    ns = {1,2,4,8,10,20};                 //信号 switch(signal){

    case 0:
    break;
    case 1:
    redLine = "1";
    break;
    case 2:
    redLine = "1";
    break;
    case 4:
    redLine = "3";
    break;
    case 8:
    redLine = "4";
    break;
    case 10:
    redLine = "5";
    break;
    case 20:
    redLine = "6";
    break;
    default://其它数字可能是多条线的组合 ArrayList temps = new ArrayList();
    ArrayList ints  = new ArrayList(); for(int i=0;i<xs.Length;i++){

    ArrayList temp    = temps; temps.Add(xs[i]);
    ints.Add(ns[i]); bool ish = false; for(int j=0;j<temp.Count;j++){ string tempStr = temp[j].ToString() + xs[i]; int    tempInt = Int32.Parse(ints[j].ToString()) + ns[i]; if(signal == tempInt){
    ish = true;
    redLine = tempStr;
    break;
    } temps.Add(tempStr);
    ints.Add(tempInt);
    } if(ish){
    break;
    }
    } break;
    } return redLine.ToCharArray();
    }