第五届蓝桥杯软件类省赛真题-JAVA-A-2_李白打酒

来源:互联网 发布:侠盗飞车3罪恶都市mac 编辑:程序博客网 时间:2024/04/30 21:00
/*【题目】标题:李白打酒    话说大诗人李白,一生好饮。幸好他从不开车。    一天,他提着酒壶,从家里出来,酒壶中有酒2斗。他边走边唱:    无事街上走,提壶去打酒。    逢店加一倍,遇花喝一斗。    这一路上,他一共遇到店5次,遇到花10次,已知最后一次遇到的是花,他正好把酒喝光了。     请你计算李白遇到店和花的次序,可以把遇店记为a,遇花记为b。则:babaabbabbabbbb 就是合理的次序。像这样的答案一共有多少呢?请你计算出所有可能方案的个数(包含题目给出的)。    注意:通过浏览器提交答案。答案是个整数。不要书写任何多余的内容。*//*【解题思路】解法一:暴力枚举解法二:深搜最后得出结果为:27 */#include<iostream>using namespace std;int count = 0;int a[15];bool isSolution(){int sum = 0;int wine = 2;for(int j=0;j<15;j++){sum += a[j];}if(sum == 5){for(int j=0;j<15;j++){if(a[j] == 0)wine -= 1;elsewine *= 2;}if(wine == 0){return true;}elsereturn false;}elsereturn false;}void dfs(int step){if(step == 15 ){if(isSolution())count++;return;}else{for(int i=0;i<2;i++){a[step] = i;dfs(step+1);}}}int main(){dfs(0);cout<<"所有可能方案的个数:"<<count;return 0;}/*#include<iostream>using namespace std;int count = 0;int main(){int a[15];for(a[0]=0;a[0]<2;a[0]++)for(a[1]=0;a[1]<2;a[1]++)for(a[2]=0;a[2]<2;a[2]++)for(a[3]=0;a[3]<2;a[3]++)for(a[4]=0;a[4]<2;a[4]++)for(a[5]=0;a[5]<2;a[5]++)for(a[6]=0;a[6]<2;a[6]++)for(a[7]=0;a[7]<2;a[7]++)for(a[8]=0;a[8]<2;a[8]++)for(a[9]=0;a[9]<2;a[9]++)for(a[10]=0;a[10]<2;a[10]++)for(a[11]=0;a[11]<2;a[11]++)for(a[12]=0;a[12]<2;a[12]++)for(a[13]=0;a[13]<2;a[13]++)for(a[14]=0;a[14]<2;a[14]++){int sum = 0;int wine = 2;for(int j=0;j<15;j++){sum += a[j];}if(sum == 5){for(int j=0;j<15;j++){if(a[j] == 0)wine -= 1;elsewine *= 2;}if(wine == 0){count++;}}}cout<<"所有可能方案的个数:"<<count;return 0;}*/

0 0
原创粉丝点击