【克罗地亚】pjesma

本文介绍了一种猜歌游戏的算法实现,该游戏旨在通过部分歌词快速识别歌曲名称。文章详细阐述了如何通过对比歌曲和专辑中的单词来确定猜出歌名的时间点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

【克罗地亚】pjesma


时间限制: 1110 ms 空间限制: 65536 KB 具体限制

Input
“Guess the song” 是一项在克罗地亚的年轻程序员中非常流行的游戏。它是一种集技能、智慧、耐性于一体的游戏。这个游戏给玩游戏的人放音乐,游戏者的目标是竟可能快地猜这首歌的歌名。
Mirko可能不是一个很好的程序员,但他是一个世界级的猜歌者。Mirko总是在专辑里的某首歌播放出至少一半歌词的时候猜出歌名。所有歌名的单词是唯一的(没有一个单词会出现一次或更多次)。
写一个程序,给出歌名和专辑名,看看Mirko在这首歌的哪个点上(在多少个单词之后)猜出歌名。

Input
第一行:包含一个整数N,1≤N≤50,它是一首歌里的单词数目。
N下面的每一行包含歌名的一个单词。
第二行:包含一个整数M,1≤M≤10 000, 它是专辑里的单词数目。
M下面的每一行包含专辑里的一个单词
歌名和专辑里的所有单词由1到15个小写英文字母组成。
注:测试数据将会使得Mirko总能从专辑里猜出歌曲名。

Output
一个数K,表示Mirko在这首歌的哪个点上(在多少个单词之后)猜出歌名。

Sample Input
3
sedam
gladnih
patuljaka
7
sedam
dana
sedam
noci
sedam
gladnih
godina

Sample Input
6

Hint
样例解释:某首歌的单词数目为3个,而题目:“某首歌播放出至少一半歌词的时候猜出歌名”,所以需要前两个单词均出现后,可以猜出是在专辑中的第6个位置。


解题思路

直接枚举就好了:

var
    a:array[1..50]of string;
    b:array[1..10000]of string;
    bz:array[1..50]of boolean;
    n,m,i,j,ans:longint;
begin
    readln(n);
    for i:=1 to n do readln(a[i]);
    readln(m);
    for i:=1 to m do
    begin
        readln(b[i]);
        for j:=1 to n do
            if b[i]=a[j] then
                if not bz[j] then
                begin
                    bz[j]:=true;
                    inc(ans);
                end;
        if ans>=(n+1)>>1 then
        begin
            writeln(i);
            halt;
        end;
    end;
end.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值