四对括号可以有多少种匹配排列方式?比如两对括号可以有两种:()()和(())

来源:互联网 发布:搜狗五笔输入法 linux 编辑:程序博客网 时间:2024/05/16 23:44
#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;}

原创粉丝点击