『洛谷T7835』士兵站队问题

题目描述

有N名士兵(1<=N<=26),编号依次为A,B,C,……进行队列训练时,指挥官要把一些士兵从高到矮依次排成一行,但现在指挥官不能直接获得每个士兵的身高信息,只能获得“P1比P2高”这样的比较结果(P1,P2∈{
  A,B,…Z},记为P1>P2),如“A>B”表示A比B高。

编一程序,根据所得到的比较结果求出符合条件的排队方案。

注:比较结果中没有涉及到的士兵不参加排队。

例如,设有3个士兵,A、B、C,给出关系(A,B),(B,C)。其中(A,B)表示士兵A高于B,当上面的关系给出之后,可以将他们排成一队:ABC。

输入输出格式

输入格式:
输入文件中每个比较结果在文件中占一行。

输出格式:
若输入数据无解或不能唯一确定,则输出“NO ANSWER!”,否则从高到矮依次输出每一个士兵的编号,中间无分隔符,并把结果写入文本文件中。

输入输出样例

输入样例#1A>B                 
B>F
F>D

这道题目看上去十分的困难,感觉毫无头绪,但是有经验的OI选手一眼就可以看出,这是TOP排序啊!(若不知道TOP排序,请见『这里!』)。但是在简单的Top排序上又要加入一些判断,详情见代码:

#include<stdio.h>
#include<stdlib.h>
#include<string
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值