听着就很饿的题目。。。


运用递归的思想 去推 一开始我用了奇奇怪怪的函数 比如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 }
递归只要细心应该挺好推的~
本文深入探讨了递归算法的应用,通过实例讲解了如何使用递归解决复杂问题,特别是在字符串处理和数学运算中。作者分享了从尝试使用strcat()函数到采用递归策略的心路历程,并提供了详细的代码实现。
294

被折叠的 条评论
为什么被折叠?



