HDOJ1735-字符统计

题目链接HDOJ1735-字符统计
个人感觉假如最后一段假如全0怎么算?就是未到n行结果之后全为0,那应该至少前几行满字,最后一行一个字。但测得数据并无这种情况。另一点是假如污染后的段数反而小于总段落数不是无解了?
改进书中代码地方:不必要再用一遍for循环记录空白数,直接第一次读入时用index记录最后一行最后有字的位置即可。而且假如该行一个字也没有,那这行至少有一个字,初始化index为1即可,但样例没有考虑这点。
在此转到关于本书博客ACM大学生程序设计竞赛在线题库最新精选题解(赵端阳)部分解析

int n, m, g;
int a[105];
int b[10005];

int  main() {
    
    
	while (cin >> n >> m >> g) {
    
    
		int ans = 0;
		int num = 0;
		int end = 0;
		for (int i = 1; i <= n; i++) {
    
    
			int index = 1;//可以用index记录最后一个字位置
			for (int j = 1; j <= m; j++) {
    
    
				scanf_s("%d", &a[j]);
				if (!a[j])ans++;
				else index = j;
			}
			if (!a[1] && !a[2])b[++end] = num;
			num = m - index;
		}
		ans = ans - 2 * g - num;
		sort(b + 1, b + end + 1);
		for (int i = end; i >= end - g + 2; i--)
			ans -= b[i];
		cout << ans << endl;
	}

	return 0;
}

猜你喜欢

转载自blog.csdn.net/qq_43305312/article/details/109024927