Fibonacci String - EOlymp - 2524

题目

若直接从1遍历到50,长度太长。

本题要用递归来解决,若y大于第i - 2个长度,则在第i-1个进行查找,否则在i-2个进行查找

#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <vector>
#include <stack>
#include <string.h>
#include <map>
#include <math.h>
#include <queue>
#include <set>
#include <algorithm>
#define MAX 0x3f3f3f3f
typedef long long ll;
using namespace std;
int n,m,k;
int a[51];
void solve(int x,int y)
{
    if(x == 1)
        cout<<'b'<<endl;
    else if(x == 0)
        cout<<'a'<<endl;
    else if(y <= a[x - 2])
        solve(x - 2,y);
    else if(y > a[x - 2])
        solve(x - 1 ,y - a[x-2]);
}
int main()
{
    cin>>n;
    a[0] = 1;
    a[1] = 1;
    for(int i = 2; i<= 49 ;i++)
        a[i] = a[i-1] + a[i-2];
    while(n--)
    {
        int x,y;
        cin>>x>>y;
        solve(x, y);
    }
    return 0;
}
上一篇:php实现的数组的几种排序


下一篇:分治 - 1 (C++描述)