01字串
时间: 1ms 内存:128M
描述:
对于长度为7位的一个01串,每一位都可能是0或1,一共有128种可能。它们的前几个是
0000000
0000001
0000010
0000011
0000100
0000101
输入:
没有输入
输出:
请按从小到大的顺序输出这128种01串。
示例输入:
示例输出:
0000000
0000001
0000010
0000011
<以下部分省略>
提示:
参考答案(内存最优[744]):
#include<stdio.h>
void aa(char a[])
{
int i;
for(i=6;i>=0;i--)
{
if(a[i]>'1')
{
a[i-1]+=1;
a[i]-=2;
}
}
}
int main()
{
int i;
char a[8]={'0','0','0','0','0','0','0','\0'};
for(i=0;i<128;)
{
puts(a);
a[6]+=1;
aa(a);
i++;
}
return 0;
}
参考答案(时间最优[0]):
#include <iostream>
#include <string>
#include <math.h>
using namespace std;
int main()
{
int i, j, cur, out, num;
string str = "00000000";
cur=7;
// while(cin>>cur)
// {
cur--;
num = pow(2,cur+1);
for(i = 0; i < num; i++)
{
for(out = 0; out <= cur; out++)
{
cout<<str[out];
}
cout << endl;
str[cur]+=1; //模拟二进制加1
for(j = cur; j >= 1; j--)
{
if(str[j] == '2')
{
str[j-1] +=1;
str[j] = '0';
}
}
}
str = "00000000";
// }
return 0;
}
题目和答案均来自于互联网,仅供参考,如有问题请联系管理员修改或删除。