我一直在研究USACO问题,并针对某些测试用例设计了这个(见下文)算法。然而,对于输入" brbrrrbbbrrrrrbrrbbrbbbbrrrb",我得到9.我不明白这是如何可能的。任何人都可以帮我找到问题。
P.S:这是第一个循环的输出,在第二个循环中没有任何值: -10 -10 -10 3 3 五 -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;
}
答案 0 :(得分:0)
原因是你有一个错误是因为“|”在你的第一个if语句中。它应该是布尔运算符“||”代替。