一共有多少种情况? 初始为2,遇到店乘以2,遇到花减1 最后一次遇到的是花,前面十四次遇到店4次,遇到花9次。且十四次后酒剩一斗。 二进制枚举: 用1表示店,0表示花,那么这个过程可以用一个14位二进制数可以表示。 登录后复制 for(int i=0;i<(1<<14);i++){ for(int j=0;j<14;j++){ if(i&(1<<j)){ //判断第j位是否为1 } } } 1.2.3.4.5.6.7. 代码: 登录后复制 #include<iostream> #include<cstring> using namespace std; int bit[15]; bool check(){ int n=2; int cnt_f=0; int cnt_d=0; for(int i=0;i<14;i++){ if(bit[i]==0){ n--; cnt_f++; if(n<0)return false; if(cnt_f>9)return false; } else{ n*=2; cnt_d++; if(cnt_d>5)return false; } } return n==1&&cnt_d==5&&cnt_f==9; } int main(){ int n=2; int res=0; for(int i=0;i<(1<<14);i++){ memset(bit,0,sizeof(bit)); for(int j=0;j<14;j++){ if(i&(1<<j)){ bit[j]=1; } } if(check()){ res++; } } cout<<res; } 1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23.24.25.26.27.28.29.30.31.32.33.34.35.36.37.38.39. 原创作者: u_16969274 转载于: https://blog.51cto.com/u_16969274/11820542