我的思路:
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.首先根据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就是结果
解决方案 »
- 为什么我的Chart控件上显示不出曲线?
- 高分 此贴内容怎么设计表!(好的话还冲QQ会员)急急。。。。
- [求助]C# Winform 禁止多开怎么实现啊?
- 安装vs2008后,MaxTOCode2007混淆过的程序不能运行的问题,请大家帮忙。
- 下载文件 从一FTP站点下载文件
- 水晶报表使用了插入---汇总功能,如果没有数据就会什么也不显示,怎么处理
- wavecome短信开发问题
- 请告诉我为什么会是B阿谢谢
- 怎样在两个Web页中传送变量(给分)
- vs 2017自带的.net core 开发的控制台程序可以直接在ubuntu 中运行么?
- 求一个算法
- 大家有知道亿阳信通的吗?偶要去,但不知道怎么样?请介绍。来者有分。
i 不就是你要的值么?
你露了一种问题如:001,010,100,101,110,111,那么像011这样的数你是如何处理
,最好用一段代码很清晰.
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++ 好
自己做一组循环一个一个嵌套!
比如n=10,就是有2的10次方个数字。就是1024个结果。你的循环也就需要10层的嵌套!然后在循环中进行字符串相加(实在是又笨又麻烦!!)
还有有一个方式就是做得到每一个数字的2进制结果,同样以10为例。就是1024个2进制数。现在只要将数字变换成为字符串输出就成了!
可以查阅MSDN使用方式
10进制变换2进制:不知道。去MSDN上找找吧,
变成字符串:ToString()
字符串格式化:Format
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++ 好
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++ 好
1.求去 2^(m-1)的值,(格式化为N位)转化为字符串即得到第m个字符串。
注: m=0...2^(N-1)OK?
众所周知,16进制是由二进制组成的,所以以上算法可以使用16进制代替,就是得出每一个数字的16进行值,然后在做程序转换成二进制字符串比如:16进制F对应二进制为1111,E对应为1110,依此类推。
例如10进制数字1000的16进制为3E8,那么结果就是:3+E+8即二进制为:111+1110+1000
最终结果就是:11111101000。不知道我说的是否明白?反正就是靠2的N次方得到数字,然后在转换!
1.求取 2^m的值,(格式化为N位)转化为字符串即得到第m个字符串。
注: m=1...NOK?
string str = "000001003004005";
for (int i=0;i<str.Length;i++)
{
if (i % 3 == 0)
{
gstr += str.Substring(i,3) + ",";
}
}
MessageBox.Show(gstr);
我那个方法不好,太麻烦
//如果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;
}