趣味算法------老虎与羊

题目概述:

        这个问题是个经典的思维算法题,假设存在一座面积足够大的岛,岛上仅仅存在一只羊,并且岛上长满了青草,现在需要往岛上投放n只新品种老虎,这种老虎有点特殊,它具有强大的智力,并且食谱复杂,可以吃草,但是更喜欢吃羊,不过这种老虎吃羊后自己会变成羊。请问岛上老虎的数量为n只时,羊会不会被吃。(会被吃输出1,不会输出2)

ps:一只老虎只能吃一只羊,不能分食,老虎之间无法交流。

思路解析:

        既然老虎具有足够的智力,那么一只老虎吃羊前肯定需要保障自己的安全(自己变成羊后不会被其他老虎吃),不妨我们带入老虎的视角,假设我们是其中一只老虎。如果岛上只有你一只老虎你会不会吃羊呢?结果是必然会的,因为你不会担心之后被其他老虎吃。那么假设岛上有两只老虎呢,如果是我的话,我不会吃,因为之后会形成我一只羊和另一只老虎的局面,它不会受其他老虎的威胁,那么我就危险了,只能和它对峙,因为具有同样的智力,那么另一只老虎也明白这种局面。关键来了,假设有三只老虎呢,如果是我,我会先下手为强吃掉羊,因为这样就形成上一步,2只老虎和一只羊对峙的局面。如果有四只老虎呢,我不会吃,因为会形成3只老虎,一只羊的局面,由上一种假设可以知道我会被吃。

        因此5只老虎可以参考四只老虎局面,四只老虎可以参考3只老虎局面......

        最后我们可以得到结论,假设岛上老虎是奇数只,羊会被吃,反之不会。

具体代码:

        

#include<stdio.h>
int main(void)
{
    int n;
    scanf("%d", &n);
    if (n % 2)
        printf("1");
    else
        printf("0");

    return 0;
}

总结:

        这段代码算是我发布文章中最简单的代码了吧,所以我也没有添加注释,因为我相信判断奇偶数同学们还是很熟练的,这道题的重点不在于代码,而是博弈的思维,之后我还会再次带来一道这种题。

  • 13
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值