大小关系

题目描述

当我们知道一组大小关系之后,可判断所有关系是否都能成立,即关系间没有矛盾。 
例如:A<B, A<C, B<C  通过这组关系我们可以得到A<B<C ,所有关系都成立,没有矛盾。 
 A<B, B<C, C<A  通过前两个关系我们得到 A<B<C ,这个关系与C<A矛盾,所有关系不能同时成立。 

现在我们知道m个关系,请判断这m个关系是否能成立,成立输出YES”,否则输出NO”

输入

多组数据,每组数据如下:

第一行有两个字母m m代表m组关系(1<=m<=400),接下来m行每行有一个关系,用两个不同的字母和一个符号表示。(输入保证字母在A’-‘Z’之间,关系符号只有 > , <

输出

对于每组数据输出YES”NO”.

样例输入

3
A<B
A<C
B<C
3
A<B
B<C
C<A

样例输出

YES
NO

#include<stdio.h> 
char a[440][4],flag,qian,hou; 
void is(int n,char qian,char hou) 
{ 
    if(flag==0) 
        return ; 
    int i; 
    for(i=0;i<n;i++) 
    { 
        if(a[i][0]==hou) 
        { 
            if(a[i][1]==qian) 
            { 
                flag=0; 
                break; 
            } 
            else
                is(n,hou,a[i][1]); 
        } 
    } 
} 
int main() 
{ 
    int m; 
    while(scanf("%d",&m)!=EOF) 
    { 
        flag=1; 
        for(int i=0;i<m;i++) 
        { 
            char c[5]; 
            scanf("%s",c); 
            if(c[1]=='<') 
            { 
                a[i][0]=c[0]; 
                a[i][1]=c[2]; 
            } 
            else
            { 
                a[i][0]=c[2]; 
                a[i][1]=c[0]; 
            } 
            if(flag) 
                is(i,a[i][0],a[i][1]); 
        } 
        if(flag) 
            printf("YES\n"); 
        else 
            printf("NO\n"); 
    } 
  
    return 0; 
} 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值