C++ 这是一个分而治之的算法吗?

C++ 这是一个分而治之的算法吗?,c++,algorithm,search,data-structures,divide-and-conquer,C++,Algorithm,Search,Data Structures,Divide And Conquer,我正在为一个类做一个程序,给定一个字符串,得到由连续的{辅音,元音}模式组成的最长子字符串,但我被要求以分治的方式来做。这是我的算法,但我不知道它是否是D&V算法。如果不是,我如何将其修改为这样 int cadenaMasLargaDeVC(string str) { int n = str.size(); string strRes, strTmp = ""; int posRes = 0; set

我正在为一个类做一个程序,给定一个字符串,得到由连续的{辅音,元音}模式组成的最长子字符串,但我被要求以分治的方式来做。这是我的算法,但我不知道它是否是D&V算法。如果不是,我如何将其修改为这样

int cadenaMasLargaDeVC(string str) {
    int n = str.size();                    
    string strRes, strTmp = "";  
    int posRes = 0;
    set<char> st;
    st.insert('a');
    st.insert('e');
    st.insert('i');
    st.insert('o');
    st.insert('u');
    for(int i = 0; i<n; i++){
        cout << i << " ";
        if(st.find(str[i]) == st.end() && st.find(str[i+1]) != st.end()){
            strTmp += string(str[i]) + str[i+1];
            i++;
        } else{
            strTmp = "";
        }          
        if(strTmp.size() > strRes.size()){
            strRes = strTmp;
            posRes = i - strRes.size() + 2;
        }
        if(strRes.size() > (n-i)) break;
    }
    cout << strRes << endl;
    return posRes;
}

不,分治范式通常有以下精确步骤:

将较大的问题划分为较小的子问题

征服有征服和结合的步骤,你试图解决基本的原子问题,你不能进一步划分,并继续结合它们

在您给出的代码中,没有涉及除法步骤。您只需传递字符串中的两个连续字符,并一直跟踪到第i个位置。这类似于通过一个给定的数组,保留max变量,并在需要时更新它

也许这个问题的本意是分割并遍历所有两个长度的子字符串-原子问题,检查连续字符是否在询问的方式中,并在合并时适当增加“计数”