2652: 今夕何夕

题目通道
题目描述
人生不相见,动如参与商。
今夕复何夕,共此灯烛光。 --杜甫《赠卫八处士》
临近毕业,马上要与室友分别,小H情不自禁背起诗来。突然,小H灵光一闪:不如每年大伙都聚一次。可是小H又犯了难,他知道大家毕业后肯定很忙,难找到共同的空闲时间。于是他让室友列出了各自的空闲时间。因为毕业后他们只有假期才可能有空闲,所以所有空闲时间就是空闲节日。你可以从这些假期中找到他们共同的空闲时间么?如果存在共同的空闲时间,请输出这个节日的名字;否则,请输出"What a shame!"。因为小H和室友未来都很忙,所以他们不会有两个及两个以上的共同空闲节日

注意:小H和室友可能聚会的法定节假日只有New Year(元旦节)、International Labor Day(劳动节)、The Dragon Boat Festival(端午节)、National Day(国庆节)。为了减少读入字符串的困扰,节日对应的缩写为NY、ILD、TDBF、ND
输入
输入包含6行,每行代表一个人的空闲节日,包含一个数字n(代表空闲节日数量),和n个节日缩写(表示对应的缩写)。
输入保证他们共同的空闲节日不超过一个。

输出
如果存在共同的空闲时间,输出这个节日的全称;否则,输出"What a shame!"。注意,输出占一行。

样例输入 Copy
1 NY
2 NY TDBF
1 NY
2 NY ND
1 NY
2 NY ILD
样例输出 Copy
New Year

#include<iostream>
#include<cstring>
using namespace std;
struct student
{
    int n;
    char a[4][5];
}st[6];
int main()
{
    for(int i=0;i<6;i++)
    {
        cin>>st[i].n;
        cin.ignore();
        for(int j=0;j<st[i].n;j++)
            cin>>st[i].a[j];
    }

    //四个节日NY、ILD、TDBF、ND
    char fes[4][5]={"NY","ILD","TDBF","ND"};
    //f数组记录4个节日 六个室友是否有空的情况
    int f[4][6]={0};

    //遍历每个节日
    for(int i=0;i<4;i++)
    {
        //遍历每个室友
        for(int s=0;s<6;s++)
        {
            //遍历每个室友的空闲节日
            for(int k=0;k<st[s].n;k++)
            {
                if(strcmp(fes[i],st[s].a[k])==0)
                {
                    f[i][s]=1;
                    break;
                }
            }
        }

    }
    /*
    打印6位学生4个节假日是否有空的情况
    for(int i=0;i<4;i++)
    {
        for(int j=0;j<6;j++)
            cout<<f[i][j]<<" ";
        cout<<endl;
    }
    */
    int cnt=0;
    for(int i=0;i<4;i++)
    {
        int flag=0;
        for(int j=0;j<6;j++)
        {
            //六个同学只要有一个没空,跳出循环
            if(f[i][j]==0)
            {
                flag=1;
                break;
            }
        }
        //cnt记录几个节日大家都没空
        if(flag)
            cnt++;
        else
        {
            if(i==0)
            {
                cout<<"New Year"<<endl;
                break;
            }
            else if(i==1)
            {
                cout<<"International Labor Day"<<endl;
                break;
            }
            else if(i==2)
            {
                cout<<"The Dragon Boat Festival"<<endl;
                break;
            }
            else if(i==3)
            {
                cout<<"National Day"<<endl;
                break;
            }
        }
    }
    if(cnt==4)
        cout<<"What a shame!"<<endl;
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值