标签:
标题:李白打酒
话说大诗人李白,一生好饮。幸好他从不开车。
一天,他提着酒壶,从家里出来,酒壶中有酒2斗。他边走边唱:
无事街上走,提壶去打酒。
逢店加一倍,遇花喝一斗。
这一路上,他一共遇到店5次,遇到花10次,已知最后一次遇到的是花,他正好把酒喝光了。
请你计算李白遇到店和花的次序,可以把遇店记为a,遇花记为b。则:babaabbabbabbbb 就是合理的次序。像这样的答案一共有多少呢?请你计算出所有可能方案的个数(包含题目给出的)。
注意:通过浏览器提交答案。答案是个整数。不要书写任何多余的内容。
1 #include<cstdio> 2 #include<cstring> 3 4 int count; 5 char a[20]; 6 7 int wine(char *a) 8 { 9 int s=2,i; 10 for(i=0;i<14;i++) 11 { 12 if(a[i]==1) 13 s=s*2; 14 else 15 s=s-1; 16 } 17 if(s==1) 18 return 1; 19 return 0; 20 } 21 22 int show(char *a) 23 { 24 int i; 25 for(i=0;i<15;i++) 26 { 27 if(a[i]==1) 28 printf("a"); 29 else 30 printf("b"); 31 } 32 printf("\n"); 33 count++; 34 } 35 36 void solve(char *a,int n,int flower,int shop) 37 { 38 if(n==14) 39 { 40 if(flower==9 && shop==5) 41 { 42 if(wine(a)) 43 { 44 show(a); 45 } 46 } 47 return; //返回void,所以用 return;48 } 49 a[n]=1; 50 solve(a,n+1,flower,shop+1); 51 a[n]=0; 52 solve(a,n+1,flower+1,shop); 53 54 } 55 int main() 56 { 57 memset(a,0,sizeof(a)); 58 solve(a,0,0,0); 59 printf("%d\n",count); 60 return 0; 61 }
标签:
原文地址:http://www.cnblogs.com/fudianheg/p/4380440.html