南邮 OJ 2049 硬币正面数量

硬币正面数量

时间限制(普通/Java) :  1000 MS/ 3000 MS          运行内存限制 : 65536 KByte
总提交 : 159            测试通过 : 41 

比赛描述

n枚硬币,现将它们排成一排,从1开始编号到n,有的正面朝上,有的反面朝上。现在要求你选择两个下标ij  (1≤i; ij ; jn),将编号在区间 [i,j] 中的硬币翻面,使得所有硬币正面朝上的数量最多。



输入

单组测试样例,第一行为一个整数n(1<=n<=100)

第二行为n个整数(1表示正面,0表示反面)


输出

输出一个整数——经过翻面后所有硬币中正面朝上的个数。


样例输入

5
1 0 0 1 0

样例输出

4

题目来源

yuman






#include<iostream>
using namespace std;
int main(){
//	freopen("test.txt","r",stdin);
	int n,i,j,k,maxSum,sum;
	char a[100];
	scanf("%d",&n);
	getchar();
	for(k=0;k<n;k++){
		scanf("%c",a+k);
		getchar();
	}
	maxSum = 0;
	for(i=0;i<n;i++){
		for(j=i;j<n;j++){
			sum = 0;
			for(k=0;k<n;k++){
				if(k<i || k>j){
					if('1'==a[k] && ++sum>maxSum){
						maxSum = sum;
					}
				}else{
					if('0'==a[k] && ++sum>maxSum){
						maxSum = sum;
					}
				}
			}
		}
	}
	printf("%d\n",maxSum);
}


你可能感兴趣的:(ACM,南邮OJ,硬币正面数量)