这道题写伪代码就好了!
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能连胜的天数增加一天。
伪代码
这道题老师只要求写伪代码!
cpp
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