01数字串

提交数: 156, 通过率: 62.82%, 平均分: 65.9

题目描述:

 有一串只包含“0” 、 “1” 的数字串 s(长度不超过 1000) , 现要从数字串 s 中截取一段数字子串(该子串一定存在), 使得数字子串中“0” 、 “1” 的数量相等。
编写程序, 求数字串 s 中满足上述要求的最长数字子串的长度及其在数字串 s 中的位置(若有多个相同的最长长度, 取第一次出现的位置)。 

输入格式:

一个01串

输出格式:

输出两行,第一行最多的长度,第二行 数字串 s 中的位置 

样例输入:

01100

样例输出:

4
0 3

提示:

请完善程序:

#include<bits/stdc++.h>
using namespace std;
char a[1001], c ;
int n, p, maxn, b[1001];
int main(){
	ios::sync_with_stdio( 0 ), cin.tie( 0), cout.tie(0);  //读入优化
	while ( cin >> c ){
		n = n+1;
		a[n] = c;
	}
	for ( int i=1; i<=n; i++) //求前缀和 b[]
		______________________________
	for ( int i=1; i<n; i++){  //枚举起点
		for ( int j=i+1; j<=n; j++){  //枚举终点
			int x = ______________,  y = _____________________;	//分别求该区间内0的个数,及1的个数。	
			if ( x == y ) { //如果这区间内0的个数和与1的个数相等,并且长度更长,那么更新最优值
				___________________
			}
		}
	}
	cout << maxn << endl;
	cout << p-1 << " " << p+maxn - 1 -1 ;
	return 0;
}

 

时间限制: 1000ms
空间限制: 256MB