#include

using namespace std;

string ans[100001];

char d[100001];

int cnt = 1;

void func(int n, int index, int aCount, int bCount, int num){

    if(index >= n){

        if(num == cnt){

            for(int i=0;i

                ans[cnt] += d[i];

            }

            cout <

            ans[cnt] = "";

        }

        cnt += 1;

        return;

    }

    if(n - aCount > 2){

        d[index] = 'a';

        func(n, index+1, aCount + 1, bCount, num);

    }

    if(bCount

        d[index] = 'b';

        func(n, index+1, aCount, bCount + 1, num);

    }

}

int main(){

    ios_base::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr);

    int t; cin >> t;

    while(t--){

        cnt = 1;

        int n, k; cin >> n >> k;

        func(n, 0, 0, 0, k);

    }

    return 0;

}


이렇게 재귀를 이용해서 풀었는데 시간초과가 뜨더라구요


다른 방법을 사용해야 하나요?