Responsive image

问题 C: 大鱼吃小鱼

问题 C: 大鱼吃小鱼

时间限制: 1 Sec  内存限制: 128 MB
提交: 129  解决: 77
[提交][状态][讨论版][命题人:]

题目描述

电影里经常出现这样的镜头小鱼总是被大鱼吃掉,而大鱼上面总还有更大的鱼。久而久之,聪明的大鱼或许就不会去吃小鱼了,否则按照传统剧情,它身后会出现一条更大的鱼。一个有趣的问题出现了:倘若所有的鱼都是理性的,那会出现怎样的情况呢?
        假设有 n 条鱼,它们从小到大依次编号为 1, 2, …, n 。我们规定,吃鱼必须要严格按顺序执行。也就是说,大鱼只能吃比自己小一级的鱼,不能越级吃更小的鱼;并且只有等到第 i 条鱼吃了第 i - 1 条鱼后,第 i + 1 条鱼才能吃第 i 条鱼。第 1 条鱼则啥都不能吃,只有被吃的份儿。我们假设,如果有小鱼吃的话,大鱼肯定不会放过;但是,保全性命的优先级显然更高,在吃小鱼之前,大鱼得先保证自己不会被吃掉才行。假设每条鱼都是无限聪明的(并且它们也都知道这一点,并且它们也都知道它们知道这一点),那么第 1 条鱼能存活下来吗?                                                                            

        当只有一条鱼的时候,第一条肯定能存活。                                                                                       

        当有两条鱼的时候,第二条鱼可以肆无忌惮的吃掉第一条鱼。                                                           

        当有三条鱼的时候,假如第二条鱼敢吃第一条鱼的话,第三条鱼是可以无顾忌的吃第二条鱼的,所以第二条鱼为了自保不能吃第一条鱼,所以第一条鱼能够存活。

         那假如有n条鱼呢?             

输入描述

输入有多组数据,每组数据有一行。

每行为一个n(1<=n<=1000),代表鱼的条数。 

输出描述

对于每组测试数据输出一行,假如第一条鱼会被吃掉输出YES,否则输出NO。

样例输入

1
2
3

样例输出

NO
YES
NO
[提交][状态]
ACM算法攻关部