四对括号可以有多少种匹配排列方式?比如两对括号可以有两种:()()和(())
来源:互联网 发布:搜狗五笔输入法 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;}