01数字串
提交数: 68, 通过率: 89.71%, 平均分: 90
题目描述:
有一串只包含“0” 、 “1” 的数字串 s(长度不超过 1000) , 现要从数字串 s 中截取一段数字子串(该子串一定存在), 使得数字子串中“0” 、 “1” 的数量相等。
编写程序, 求数字串 s 中满足上述要求的最长数字子串的长度及其在数字串 s 中的位置(若有多个相同的最长长度, 取第一次出现的位置)。
输入格式:
一个01串
输出格式:
输出两行,第一行最多的长度,第二行 数字串 s 中的位置
样例输入:
01100
样例输出:
4 0 3
提示:
请完善程序:
#include<bits/stdc++.h>
using namespace std;
int a[1001], b[1001], n , start, _end, max_len;
string s;
int main(){
ios::sync_with_stdio( 0 ), cin.tie( 0), cout.tie(0);
cin >> s;
n = s.length();
for ( int i=1; i<=n ; i++){
if ( s[i-1] == '0' ) {
a[ i ] = a[ i-1 ];
b[i] = b[i - 1] + 1;
}
else{
a[i] = a[i - 1] + 1;
__________________ // (1)
}
}
for ( int i=1; i<=n ; i++ ){
for ( int j=i+1; j<=n; j++ ){
if ( ______________________ ){ // (2)
if ( max_len < j - i + 1 ){
max_len = j - i + 1;
start = ______________; // (3)
_end = j - 1;
}
}
}
}
cout << max_len<<endl;
cout << start << " " << _end << endl;
return 0;
}
时间限制: 1000ms
空间限制: 256MB