牛客第十场B 咖啡鸡

听着就很饿的题目。。。

运用递归的思想 去推 一开始我用了奇奇怪怪的函数 比如strcat() 去粘起来 然后发现这个函数好像只能用两三次。。

后来就学习别人的思路——递归 做了

 1 #include<bits/stdc++.h>
 2 typedef long long ll;
 3 using namespace std;
 4 const ll inf=1e12+10;
 5 string s1="0COFFEE";
 6 string s2="0CHICKEN";
 7 ll s[1005];
 8 char findd(ll n, ll k)
 9 {
10     if(n==1) return s1[k];
11     if(n==2) return s2[k];
12     if(k>s[n-2]) return findd(n-1,k-s[n-2]);
13     if(k<=s[n-2]) return findd(n-2,k);
14 }
15 int main()
16 {    
17     s[1]=6,s[2]=7;
18     for(int i=3;i<=500;i++)
19     {
20         s[i]=min(inf,s[i-2]+s[i-1]);//min要俩个同类型的
21     }
22     ll T,n,k;
23     cin >> T;
24     while(T--)
25     {
26         cin >> n >> k;
27         for(ll i=k;i<k+10&&i<=s[n];i++)//i有两个条件 少了任一个都不能AC
28         {
29             cout <<findd(n,i);
30         }
31         cout << endl;
32     }
33     return 0;
34 } 

递归只要细心应该挺好推的~

转载于:https://www.cnblogs.com/xyishere/p/11383741.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值