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;
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值