string[] arrr = { "a", "b", "c", "d" };
组合成不同的字符串比如
abc
bcd
acd
abd
ab
ac
ad
bc
bd
cd
a
b
c
d

解决方案 »

  1.   

    一个一个截取,是这个意思吗?s.substring()
      

  2.   

    这种情况 可能要取3次了abc
    bcd
    acd
    abd
    ab
    ac
    ad
    bc
    bd
    cd
    a
    b
    c
    d有1个元素的组合也有2个arrr[i]
    arrr[i]+arrr[j]
    arrr[i]+arrr[j]+arrr[k]
      

  3.   

    string[] ss = textBox1.Text.Trim().Split(',');//取数组,例如a,b,c,d,e,f
                List<string> lst = new List<string>();
                for (int num = 1; num < ss.Length; num++)
                {
                    for (int i = 0; i < ss.Length; i++)
                    {
                        string s = ss[i];
                        int j = 1;
                        while (num > j && (i + j) < ss.Length)
                        {                        s += ss[i + j];
                            j++;
                        }
                        lst.Add(s);
                    }
                }
                lst.Sort();//排个序
      

  4.   

    protected void Button1_Click(object sender, EventArgs e)
        {
            string[] arry = { "a", "b", "c", "d" };
            ArrayList al = new ArrayList();
            string str;
            bool flag = true;
            for (int i = 0; i < 4; i++)
            {
                al.Add(arry[i].ToString()+"</br>");
                for (int j =i+1; j < 4; j++)
                {
                    al.Add(arry[i].ToString() +arry[j].ToString()+ "</br>");
                    for (int k = j+1; k < 4; k++)
                    {
                        al.Add(arry[i].ToString() + arry[j].ToString() + arry[k].ToString() + "</br>");
                        for (int s = k+1; s < 4; s++)
                        {
                            str = arry[i].ToString() + arry[j].ToString() + arry[k].ToString() + arry[s].ToString();
                            for (int p = 0; p < al.Count; p++)
                            {
                                if (str == al[p].ToString())
                                    flag = false;
                            }
                            if (flag)
                            {
                                al.Add(str);
                            }
                        }
                    }
                }
            }
            for (int p = 0; p < al.Count; p++)
            {
                Response.Write(al[p].ToString()+"</br>");
            }
        }
      

  5.   

    protected void Button1_Click(object sender, EventArgs e)
        {
            string[] arry = { "a", "b", "c", "d" };
            ArrayList al = new ArrayList();
            string str;
            bool flag = true;
            for (int i = 0; i < 4; i++)
            {
                al.Add(arry[i].ToString()+"</br>");
                for (int j =i+1; j < 4; j++)
                {
                    al.Add(arry[i].ToString() +arry[j].ToString()+ "</br>");
                    for (int k = j+1; k < 4; k++)
                    {
                        al.Add(arry[i].ToString() + arry[j].ToString() + arry[k].ToString() + "</br>");
                        for (int s = k+1; s < 4; s++)
                        {
                            str = arry[i].ToString() + arry[j].ToString() + arry[k].ToString() + arry[s].ToString();
                            for (int p = 0; p < al.Count; p++)
                            {
                                if (str == al[p].ToString())
                                    flag = false;
                            }
                            if (flag)
                            {
                                al.Add(str);
                            }
                        }
                    }
                }
            }
            for (int p = 0; p < al.Count; p++)
            {
                Response.Write(al[p].ToString()+"</br>");
            }
        }
      

  6.   

    差点当成全排列了,结果不是,abcd的组合没有,这个在SQL里可以用笛卡尔积很轻松地解决
    select a,b,c,d from Table A,B,C,D 或者用CROSS JOIN
    http://book.51cto.com/art/200806/75913.htm程序中可以考虑用递归
      

  7.   

    string[] ss = textBox1.Text.Trim().Split(',');//取数组,例如a,b,c,d,e,f
                List<string> lst = new List<string>();            for (int i = 0; i < ss.Length; i++)
                {
                    lst.Add(ss[i]);
                    int startNum = i ;
                    for (int j = startNum; j < ss.Length; j++)
                    {
                        string s = ss[i];
                        for (int l = 1; l < ss.Length; l++)
                        {
                            if (j + l < ss.Length)
                            {
                                s += ss[j + l];
                                lst.Add(s);
                            }
                            else
                            {
                                break;
                            }
                        }
                    }
                }
                lst.Sort();//排个序