#include<iostream>
#include<string>
using namespace std;
int howMany1s(unsigned int num)
{
int count=0;
for(int i=0;i<8;i++)
{
if((num&0x1)==1)
count++;
num=num>>1;
}
return count;
}
bool check(unsigned int num)
{
int flag=0;
if(num<0||num>255)
return false;
unsigned int pointer=0x80;
for(int i=0;i<8;i++)
{
if((pointer&num)!=0)
flag++;
else
flag--;
if(flag<0)
return false;
pointer=pointer>>1;
}
if(flag==0)
return true;
return false;
}
void printCombo(unsigned int num)
{
unsigned int pointer=0x80;
for(int i=0;i<8;i++)
{
if((pointer&num)!=0)
cout<<"(";
else
cout<<")";
pointer=pointer>>1;
}
cout<<endl;
}
int main()
{
int count=0;
for(unsigned int i=0;i<256;i++)
{
if(howMany1s(i)!=4)
continue;
else
{
if(check(i))
{
count++;
printCombo(i);
}
}
}
cout<<"In total:"<<count<<endl;
}
四对括号可以有多少种匹配排列方式?比如两对括号可以有两种:()()和(())
最新推荐文章于 2021-11-07 17:51:19 发布