华东交通大学2021年ACM“双基”程序设计竞赛 H-红花个人解答(C+python)

https://ac.nowcoder.com/acm/contest/21684/H

题目描述:

一天,小椒发现了一个特别的花园,那里的花连续的排成一行,并且只有红花和白花。小椒钟爱红花,他想知道在这个花园里最大连续红花的数量会不会达到或超过他心中期望的连续红花数。

输入描述:

第一行输入 n 和 t ,表示花的数量以及小椒心中期望的连续红花数。

第二行输入长度为 n 的01串。在这个01串中,‘0’表示白花,‘1’表示红花。

(10000001≤t≤n≤1000000)

输出描述:

若这个花园里最大连续红花的数量达到或超过他心中期望的连续红花数,则输出 “Yes” ,反之输出 “No”。(均不含双引号)

实例1:

输入:

10 5
1100011001

输出:

No

实例2:

输入:

10 2
1100011001

输出:

Yes.

C语言解答:

#include<stdio.h>
char s[1000001];
int main()
{
    int n,t,z;
    scanf("%d%d",&n,&t);
    scanf("%s",s);
    s[n]=' ';
    int i,count=0;
    for(i=0;i<n;i++)
    {
        if(s[i]=='1')
        {
            count++;
        }
        else
        {
            if(count>z)
            {
                z=count;
            }
            count=0;
        }
    }
    if(count>z)
        z=count;
    if(z>=t)
        printf("Yes");
        else
            printf("No");
    return 0;
}

python解答:

n,t=map(int,input().split())
c,z=0,0
s=input()
for i in range(n):
    if s[i]=='1':
        c=c+1
    elif s[i]=='0':
        if c>z:
            z=c
        c=0
if c>=z:
    z=c
if z>=t:
    print("Yes")
else:
    print("No")

以字符串形式输入,遍历一边,统计最大连续红花数量。

上一篇:实验三


下一篇:2019年ACM银川站H题_悬线法