C++ 这是一个分而治之的算法吗?
我正在为一个类做一个程序,给定一个字符串,得到由连续的{辅音,元音}模式组成的最长子字符串,但我被要求以分治的方式来做。这是我的算法,但我不知道它是否是D&V算法。如果不是,我如何将其修改为这样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
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变量,并在需要时更新它 也许这个问题的本意是分割并遍历所有两个长度的子字符串-原子问题,检查连续字符是否在询问的方式中,并在合并时适当增加“计数”