Guess the Animal(思维)

题目描述
When bored of playing their usual shell game, Bessie the cow and her friend Elsie like to play another common game called “guess the animal”.
Initially, Bessie thinks of some animal (most of the time, this animal is a cow, making the game rather boring, but occasionally Bessie is creative and thinks of something else). Then Elsie proceeds to ask a series of questions to figure out what animal Bessie has selected. Each question asks whether the animal has some specific characteristic, and Bessie answers each question with “yes” or “no”. For example:

Elsie: “Does the animal fly?”
Bessie: “No”
Elsie: “Does the animal eat grass?”
Bessie: “Yes”
Elsie: “Does the animal make milk?”
Bessie: “Yes”
Elsie: “Does the animal go moo?”
Bessie: “Yes”
Elsie: “In that case I think the animal is a cow.”
Bessie: “Correct!”
If we call the “feasible set” the set of all animals with characteristics consistent with Elsie’s questions so far, then Elsie keeps asking questions until the feasible set contains only one animal, after which she announces this animal as her answer. In each question, Elsie picks a characteristic of some animal in the feasible set to ask about (even if this characteristic might not help her narrow down the feasible set any further). She never asks about the same characteristic twice.

Given all of the animals that Bessie and Elsie know as well as their characteristics, please determine the maximum number of “yes” answers Elsie could possibly receive before she knows the right animal.

输入
The first line of input contains the number of animals, N (2≤N≤100). Each of the next N lines describes an animal. The line starts with the animal name, then an integer K (1≤K≤100), then K characteristics of that animal. Animal names and characteristics are strings of up to 20 lowercase characters (a…z). No two animals have exactly the same characteristics.

输出
Please output the maximum number of “yes” answers Elsie could receive before the game ends.

样例输入
4
bird 2 flies eatsworms
cow 4 eatsgrass isawesome makesmilk goesmoo
sheep 1 eatsgrass
goat 2 makesmilk eatsgrass

样例输出
3

提示
In this example, it is possible for Elsie to generate a transcript with 3 “yes” answers (the one above), and it is not possible to generate a transcript with more than 3 “yes” answers.

思路
找最长的相似特征,答案为最长的相似特征+1

代码实现

#pragma GCC optimize(3,"Ofast","inline")
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
const int N=105;
const int M=10005;
const int INF=0x3f3f3f;
const ull sed=31;
const ll mod=1e9+7;
const double eps=1e-8;
const double PI=acos(-1.0);
typedef pair<int,int>P;
 
string chr;
vector<string>ani[N];
int n;
 
int com(int x,int y)
{
    int temp=0;
    for(int i=0;i<ani[x].size();i++)
    {
        for(int j=0;j<ani[y].size();j++)
        {
            if(ani[x][i]==ani[y][j]) temp++;
        }
    }
    return temp;
}
int main()
{
    ios::sync_with_stdio(false);
    cin.tie(0);cout.tie(0);
    cin>>n;
    for(int i=0;i<n;i++)
    {
        int k;
        cin>>chr>>k;
        for(int j=0;j<k;j++)
        {
            cin>>chr;
            ani[i].push_back(chr);
        }
    }
    int ans=0;
    for(int i=0;i<n;i++)
    {
        for(int j=0;j<i;j++)
        {
            ans=max(ans,com(i,j));
        }
    }
    cout<<ans+1<<endl;
    return 0;
}
发布了235 篇原创文章 · 获赞 13 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/weixin_43935894/article/details/104217681