zoukankan      html  css  js  c++  java
  • 洛谷 P2089 烤鸡

    看了前面大佬的代码,发现这道题的解题思路都大同小异。

    首先肯定要定义一个变量累加方案数量,因为方案数量要最先输出,所以所有方案要先储存下来。个人不喜欢太多数组,就只定义一个字符串。

    然后我们发现只有10种配料,每中在1~3以内,我们便可以模拟一下四进制(4^9==262144,在int范围内)。

    累加函数:

    string tot;int n,m;//预备工作 
    
    void leiji(int a){//进行累加的函数 
      int b=262144;//模拟四进制 
      while(a){
          tot+=a/b+'0';//用短除法得出各个位上的数。(要倒着来 ) 
          tot+=' ';//这个空格很重要! 
          a%=b;b/=4;
      }
      tot+='
    ';m++;//换行符也很重要!(m是方案数量) 
    }
    

    递归函数:

    void f(int s,int k){
      if(s<1&&k<262145)return;//美味程度达到了 配料还有剩 
      if(s>0&&k>262144)return;//配料放完了而美味程度没达到 
      if(s==0&&k>262144){//达到要求 
          leiji(k);
          return;
      }//以上三种为递归边界 
      f(s-1,k*4+1);
      f(s-2,k*4+2);//k*4是模拟四进制 
      f(s-3,k*4+3);
    }
    

    主函数:

    int main(){//主函数 
      cin>>n;
      f(n,0);
      cout<<m<<endl<<tot;//输出,圆满 
      return 0;
    }
    
    ✐☎博主撰文不易,转载还请注明出处;若对本文有疑,请私信或在下方讨论中提出。O(∩_∩)O谢谢!☏

    ☃〔尽管小伙伴们肯定有千百种方式针对,但博主还是极其非常十分不要脸的把反对键吃掉辣!〕☃

    ✿『$At$ $last$:非常一(hu)本(shuo)正(ba)经(dao)的:博主很笨,请不要欺负他』✿✍

  • 相关阅读:
    商标查询网
    java: jsp:param中文乱码
    java:maven中webapp下的jsp不能访问web-inf下面的bean
    java:类集回顾
    java:类集操作,多对多的关系
    java:类集操作总结
    java:练习学校学生
    php发邮件:swiftmailer, php邮件库——swiftmailer
    java:练习超市卖场
    phalcon: 按年分表的model怎么建?table2017,table2018...相同名的分表模型怎么建
  • 原文地址:https://www.cnblogs.com/812-xiao-wen/p/9879291.html
Copyright © 2011-2022 走看看