[プログラマー]Weeklyチャレンジ:アクセント辞書(C++)


質問リンク:アクセント辞典
[質問へのアクセス]
アルファベットの個数は5個しかないので、すべて探索しても時間内に問題を解決できます.
したがって,文字の最大サイズがnの場合(1<=n<=5)にarrに可能なすべての状況を入れてarrを並べ替えると,いくつか目の単語を容易に見つけることができる.
[ソースコード]
#include <string>
#include <vector>
#include <algorithm>

using namespace std;
vector<string> arr;
string temp[5] = {"A", "E", "I", "O", "U"};

void go(int maxlen, string s) {
    if(maxlen == s.size()) {
        arr.push_back(s);
        return;
    }
    
    for(int i=0 ; i<5 ; i++) {
        go(maxlen, s+temp[i]);
    }
}

int solution(string word) {
    int answer = 0;
    for(int i=1 ; i<=5 ; i++) {
        go(i, "");
    }
    
    sort(arr.begin(), arr.end());
    answer = find(arr.begin(), arr.end(), word)-arr.begin()+1;
    
    return answer;
}