2013校园招聘-暴风影音-笔考试题-输入n,输出对应的所有长度为n的二进制串

2013校园招聘---暴风影音---笔试题--输入n,输出对应的所有长度为n的二进制串

输入1

输出:

0

1

 

输入3:

输出:

000
001
010
011
100
101
110
111

 

//暴风影音 2013 校园招聘 笔试题
#include <iostream>
#include <math.h>
#include <stack>
using namespace std;

void print(unsigned int n)
{
	int max = pow((double)2,(int)n);
	unsigned int  MASK = 0x00000001;
	stack<int> s;
	for(unsigned int i=0; i<max; i++)
	{
		for(int j=0; j<n; j++)
		{
			s.push(((i & MASK)==MASK) ? 1:0);
			MASK=MASK<<1;
		}
		while(s.size())
		{
			cout << s.top();
			s.pop();
		}
		MASK=MASK>>n;
		cout << endl;
	}
}

void main()
{
	print(3);
}


 

2楼keynumber1小时前
我也写了一个。
1楼keynumber昨天 18:13
[code=cpp]n#include <iostream>nusing namespace std;nint main()n{ntchar a[100];ntint pa=0;ntint n;ntcin>>n;ntfor (int i=0;i<n;i++)ntta[i]=47;ntwhile (pa>=0)nt{nttif(pa>=n)ntt{nttta[pa]=0;ntttcout<<a<<endl;tntttpa--;ntttcontinue;ntt}nttif(a[pa]>='1')ntt{nttta[pa--]=47;ntttcontinue;ntt}ntta[pa]++;nttpa++;nt}n}n[/code]
Re: bxyill昨天 18:14
回复keynumbern嗯,好方法!学习了。我的太暴力了。纯属暴力输出。嘿嘿