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