Python教程

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

本文主要是介绍华东交通大学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")

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

这篇关于华东交通大学2021年ACM“双基”程序设计竞赛 H-红花个人解答(C+python)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!