我的思路:
1.首先根据N确定你现在的字符串的长度;
2.定义上面长度的一个字符串,有N个0组成(N是上面得到的长度)[这就是第一个组合]strFirst
3.定义一个上面长度的字符串,有N个1组成(N是上面得到的长度)[这就是第二个组合]
strEnd
3.将该字符串strFirst的最后一位变为1,(这是第三个组合)
4.将这个1从最后一位用循环移动到第一位,中间假设移动了J次,则又出现了J个组合
5.将总的循环次数减1,因为第一个已经是1了,然后用剩下的字符串再做上面的动作,然后循环次数再减1,......直到得到所有一个组数和strEnd一样多为止。中间产生的所有字符串再加strFirst和strEnd就是结果

解决方案 »

  1.   

    for int i=0;i<2^n;i++
    i 不就是你要的值么?
      

  2.   

    to:storm97(风暴不再) 
    你露了一种问题如:001,010,100,101,110,111,那么像011这样的数你是如何处理
    ,最好用一段代码很清晰.
      

  3.   

    具体:
    for(int i=0;i<2^n;i++)
      for(int j=0;j<n;j++)
      {
        if(j&1 != 0)
           TargetString = "1";
        else
           TargetString = "0";
        j = j >> 1;
       }---- c++ 好
      

  4.   

    以下结果假设你要的结果是字符串型的。
    自己做一组循环一个一个嵌套!
    比如n=10,就是有2的10次方个数字。就是1024个结果。你的循环也就需要10层的嵌套!然后在循环中进行字符串相加(实在是又笨又麻烦!!)
    还有有一个方式就是做得到每一个数字的2进制结果,同样以10为例。就是1024个2进制数。现在只要将数字变换成为字符串输出就成了!
    可以查阅MSDN使用方式
    10进制变换2进制:不知道。去MSDN上找找吧,
    变成字符串:ToString()
    字符串格式化:Format
      

  5.   

    具体:
    for(int i=0;i<2^n;i++)
      for(int j=0;j<n;j++)
      {
        if(j&1 != 0)
           TargetString = "1";
        else
           TargetString = "0";
        j = j >> 1;
       }---- c++ 好
      

  6.   

    具体:
    for(int i=0;i<2^n;i++)
      for(int j=0;j<n;j++)
      {
        if(j&1 != 0)
           TargetString = "1";
        else
           TargetString = "0";
        j = j >> 1;
       }---- c++ 好
      

  7.   

    我的算法:
    1.求去 2^(m-1)的值,(格式化为N位)转化为字符串即得到第m个字符串。
      注: m=0...2^(N-1)OK?
      

  8.   

    c#中好像没有二进制数字这个概念!但是有16进制数字,
    众所周知,16进制是由二进制组成的,所以以上算法可以使用16进制代替,就是得出每一个数字的16进行值,然后在做程序转换成二进制字符串比如:16进制F对应二进制为1111,E对应为1110,依此类推。
    例如10进制数字1000的16进制为3E8,那么结果就是:3+E+8即二进制为:111+1110+1000
    最终结果就是:11111101000。不知道我说的是否明白?反正就是靠2的N次方得到数字,然后在转换!
      

  9.   

    更正:我的算法:
    1.求取 2^m的值,(格式化为N位)转化为字符串即得到第m个字符串。
      注: m=1...NOK?
      

  10.   

    string gstr = null;
    string str = "000001003004005";
    for (int i=0;i<str.Length;i++)
    {
    if (i % 3 == 0)
    {
    gstr += str.Substring(i,3) + ",";
    }
    }
    MessageBox.Show(gstr);
      

  11.   

    更正:我那个方法有问题,zhbname(赤澜) 说得没错,
    我那个方法不好,太麻烦
      

  12.   

    正确的方法来了!绝对正确,童叟无欺:
    //如果n=3则s=111,n=4,s=1111......
    string s="111";//将要处理的0和1的组合字符串 int a=Convert.ToInt32(s,2);
    string str="";
    for(int i=a;i>=0;i--)
    {
    str=Convert.ToString(a,2);
    if(str.Length!=s.Length)
    {
    string strZero="";
    for(int j=0;j<s.Length-str.Length;j++)
    {
        strZero+="0";
    }
    str=strZero+str;
    }
        MessageBox.Show(str);
    a=a-1;
    }