1 条题解

  • 0
    @ 2025-2-14 21:30:05

    C :

    #include<stdio.h>
    #include<stdlib.h>
    #include<string.h>
    int main()
    {
        int n,i,j,k;
        int sum[1010],c[1010];   //记录是否获胜 
        char a[1010][100],b[1010][100];   //记录每队选手的名字
        while(scanf("%d%*c",&n),n)
        {
            memset(sum,0,sizeof(sum));  //初始化使sum=0,表失败 
            for(i=0;i<n;i++)
            { 
               scanf("%s%s",&a[i],&b[i]);
               sum[i]=1;    //表示前面a[i]获胜,b[i]失败
            }
            for(i=0;i<n;i++)   //比较看在b[i]中是否存在与a[i]相同的,存在就不是胜利者
            {
                for(j=0;j<n;j++)
                {
                    if(strcmp(a[i],b[j])==0)   
                    sum[i]=0; 
                }
            }
            for(k=0,i=0;i<n;i++)   //将全部没出现在失败者里的获胜者 的编号存放在c[]数组里,然后再比较
            {
                if(sum[i]==1)
                c[k++]=i;
            }
            int flag=0;
            for(i=1;i<k;i++)
            {
               if(strcmp(a[c[i]],a[c[i-1]])==0)   
               flag++;    //比较看是否只有一个人在真的获胜者之中 
            } 
            if(flag==k-1)   printf("Yes\n");
            else   printf("No\n");
        }
        
        return 0;
    }
    

    C++ :

    #include<cstdio>
    #include<string>
    #include<cstring>
    #include<map>
    using namespace std;
    int pre[1005];
    map<string,int> st;
    map<int,string> ct;
    int main()
    {
        int n,cnt,flag;
        string a,b;
        char cha[105],chb[105];
        for(;scanf("%d",&n),n;)
        {
            flag=0;
            memset(pre,0,sizeof(pre));
            cnt=0;
            st.clear();
            ct.clear();
            for(int i=0;i<n;++i)
            {
                scanf("%s%s",cha,chb);
                a=string(cha);
                b=string(chb);
                if(st.count(a)==0)
                {
                    st.insert(make_pair(a,cnt));
                    ct.insert(make_pair(cnt++,a));
                }
                if(st.count(b)==0)
                {
                    st.insert(make_pair(b,cnt));
                    ct.insert(make_pair(cnt++,b));
                }
                pre[st.find(b)->second]++;
            }
            for(int i=0;i<cnt;++i)
                if(pre[i]==0)
                   flag++;
            if(flag==1)
                puts("Yes");
            else
                puts("No");
        }
        return 0;
    }
    
    • 1

    信息

    ID
    931
    时间
    1000ms
    内存
    32MiB
    难度
    (无)
    标签
    递交数
    0
    已通过
    0
    上传者