【贪心算法】 Opponents

14 篇文章 1 订阅

这道题写伪代码就好了!
Description
Arya has n opponents in the school. Each day he will fight with all opponents who are present this day. His opponents have some fighting plan that guarantees they will win, but implementing this plan requires presence of them all. That means if one day at least one of Arya’s opponents is absent at the school, then Arya will beat all present opponents. Otherwise, if all opponents are present, then they will beat Arya.

For each opponent Arya knows his schedule — whether or not he is going to present on each particular day. Tell him the maximum number of consecutive days that he will beat all present opponents.

Note, that if some day there are no opponents present, Arya still considers he beats all the present opponents.

Input
The first line of the input contains two integers n and d (1 ≤ n, d ≤ 100) — the number of opponents and the number of days, respectively.

The i-th of the following d lines contains a string of length n consisting of characters ‘0’ and ‘1’. The j-th character of this string is ‘0’ if the j-th opponent is going to be absent on the i-th day.

Output
Print the only integer — the maximum number of consecutive days that Arya will beat all present opponents.

Sample Input
2 2
10
00

Sample Output
2

题意

有一个人,要和n个人pk,要pk d天

如果这一天所有人都来了,他就输了

否则这个人就会说胜利

问这个人最多能够连续胜利多少天

题解:

在这个问题中,我们的目标是找到Arya能够连续获胜的最长天数
子结构: 每个子问题是关于从第 i i i天开始 Arya 能够连胜的天数。在贪婪算法中,我们通过选择当前能够获得最大连胜的方案来逐步构建最优解。
如果当前所有的敌人到齐了,Arya失败,当前能连胜的天数被重置为0;如果当前敌人没到齐,也就是输入的string有一个字符为0,Aray能连胜的天数增加一天。

伪代码

这道题老师只要求写伪代码!

function solution(int n, int d)
	temp=0
	ans=0
	for i=0 to d-1 do
		can=0
		input string s
		for j=0 to n-1 do
			if s[j]==0 then
				can=1 //once there is one that is absent, Arya can beat them all.
				break
		if can==1 then
			temp++
		else temp=0
		ans=max{ans,temp}
    return ans
  • 19
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值