美文网首页
回溯李白打酒问题

回溯李白打酒问题

作者: Super_邓帅 | 来源:发表于2017-01-02 21:42 被阅读0次


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

    代码:

    #include<stdio.h>
    #define N 14  //总的步数 
    int count=0;  //次数 
    int wine=2;   //酒 
    int dian=0,flower=0; //店 和 花 的数量 
    
    void traceback(int t)
    {
        if(t==N&&wine==1&&dian==5&&flower==9){
            count++;
            return;
        }
        wine--;
        flower++;
        if(flower<=9){
            traceback(t+1);
        }
        flower--;
        wine++;
        
        wine*=2;
        dian++;
        if(dian<=5){
            traceback(t+1);
        }
        dian--;
        wine/=2;
    
    }
    int main(){
        traceback(0);      //t代表步数,最后一步为花,所以只考虑前14步 
        printf("%d种情况\n",count);
        return 0;
    }
    
    运行截图

    相关文章

      网友评论

          本文标题:回溯李白打酒问题

          本文链接:https://www.haomeiwen.com/subject/rwqgvttx.html