#include <bits/stdc++.h> using namespace std; int main() { string s; while(cin>>s){ int len=s.size(); int max1=0; string str,vt; regex reg("^(01)+0$"); for(char c:s){ if(c=='0'){ if(!vt.empty()&&vt.back()==0){ if(regex_search(vt,reg)&&vt.size()>max1){ max1=vt.size(); str=vt; cout<<max1<<endl; } vt.clear(); } vt=vt+c; } } if(max1>0)cout<<str<<endl; //else cout<<-1<<endl; } return 0; }为什么无法输出
时间: 2024-02-14 19:29:19 浏览: 264
C++万能头: bits/stdc++.h 下载
根据您提供的代码,可能无法输出结果的原因是因为您没有在最后的 `if` 语句中加入输出 `-1` 的部分,并且可能没有按照预期的方式输入数据。
以下是修改后的代码,包括输出 `-1` 的情况:
```cpp
#include <iostream>
#include <string>
#include <regex>
using namespace std;
int main() {
string s;
while (cin >> s) {
int len = s.size();
int max1 = 0;
string str, vt;
regex reg("^(01)+0$");
for (char c : s) {
if (c == '0') {
if (!vt.empty() && vt.back() == '0') {
if (regex_search(vt, reg) && vt.size() > max1) {
max1 = vt.size();
str = vt;
}
vt.clear();
}
}
vt += c;
}
if (max1 > 0) {
cout << str << endl;
} else {
cout << "-1" << endl;
}
}
return 0;
}
```
在这个修改后的代码中,我将 `vt.back()==0` 修改为 `vt.back()=='0'` 来比较字符。
此外,我添加了一个 `else` 语句来处理当没有满足条件的字符串时的情况,输出 `-1`。
请确保按照预期的方式输入数据,并检查输出是否正确。
希望这可以解决您的问题。如果还有其他疑问,请随时提问。
阅读全文