我一直在研究一个 USACO 问题,并为一些测试用例设计了这个(见下文)算法。但是,对于输入“brbrrrbbbrrrrrrrrbbbbbbrrrrb”,我得到 9。我不明白这怎么可能。谁能帮我找到问题所在。
P.S:这些是第一个循环的输出,第二个循环中没有任何值: -10 -10 -10 3个 3个 5个 -10 2个 2个 -10 4个 4个 -10 0
#include <iostream>
#include <vector>
using namespace std;
int main() {
string necklace;
cin >> necklace;
vector <int> neck;
int c_it = 0;
for(unsigned int i = 0; i < necklace.length(); i++){
if(necklace[i] == necklace[i+1] | 'w' == necklace[i+1]){
c_it++;
}
else{
if (c_it >= 1){
cout << c_it+1 << endl;
}
else{
cout << "-10" << endl;
}
c_it = 0;
}
}
int maximum = 0;
for(int i=0; i < neck.size(); i++){
for(int j=1; j<= neck.size(); j++){
int valueToCompare = neck[i] + neck[j];
if(valueToCompare > maximum){
maximum = valueToCompare;
}
i++;
j++;
}
}
cout << maximum;
}
最佳答案
你出错的原因是因为“|”在你的第一个 if 语句中。它应该是 bool 运算符“||”相反。
关于c++ - 将字符串转换为整数然后找到连续对整数 C++ 的最大总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47244662/