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)的:博主很笨,请不要欺负他』✿✍

  • 相关阅读:
    Why does my Authorize Attribute not work?
    百度网页搜索部来自Console的招聘信息
    Javascript 日期时间超强正则表达式
    解决SQL Server [Suspect]
    我回来了
    不忘初心
    WEB系统技术开发方向
    使用postman模拟登录请求
    什么是蓝绿部署?
    element-ui Cascader 级联选择器示例
  • 原文地址:https://www.cnblogs.com/812-xiao-wen/p/9879291.html
Copyright © 2011-2022 走看看