zoukankan      html  css  js  c++  java
  • 李白打酒——C++


     话说大诗人李白,一生好饮。幸好他从不开车。
        一天,他提着酒壶,从家里出来,酒壶中有酒2斗。他边走边唱:
        无事街上走,提壶去打酒。
        逢店加一倍,遇花喝一斗。
        这一路上,他一共遇到店5次,遇到花10次,已知最后一次遇到的是花,他正好把酒喝光了。 
        请你计算李白遇到店和花的次序,可以把遇店记为a,遇花记为b。则:babaabbabbabbbb 就是合理的次序。像这样的答案一共有多少呢?请你计算出所有可能方案的个数(包含题目给出的)。

     #include<iostream>
    #include<string>
    #include<set>
    using namespace std;
    set<string> result;
    string road="               ";
    string key = "ab";
    int a = 0, b = 0;
    int judge(string a) {
        int w = 2;
        for (int i = 0; i < a.length(); i++) {
            if (a[i] == 'a')
                w *= 2;
            else
                w--;
            if (w < 0)
                return 0;
        }
        if (w == 0)
            return 1;
        return 0;
    }
    void search(char ch,int a,int b, int k) {
        if (a < 5) {
                road [k]= 'a';
                search(key[0], a + 1, b, k + 1);
        }
        if (b < 10) {
                road[k]= 'b';
                search(key[1], a, b + 1, k + 1);
        }
        if (judge(road))
            result.insert(road);
    }
    int main() {
        search('a',0,0,0);
        for (auto it = result.begin(); it != result.end(); it++)
            cout << *it << endl;
        return 0;
    }
  • 相关阅读:
    服务器基础安全配置
    PhpStorm服务激活
    MySQL快速生成本地测试数据
    mac上php版本切换
    保存修改数据记录(数据库)
    java面向对象整理
    用JavaScript实现表格编辑器
    循环之 打鱼还是晒网这是个问题
    循环之圆周率计算次数
    JAVASE 循环 之 计算各位上数字的和
  • 原文地址:https://www.cnblogs.com/F-itachi/p/9974335.html
Copyright © 2011-2022 走看看