博弈--两堆一样多的石子,先手必败

哈理工校赛的一道博弈题

当时想了好久,都已经摸到答案的边了,最后还是没做对。傻逼了。

还是做博弈做的太少。

博弈--两堆一样多的石子,先手必败_第1张图片

题目中k的范围   是关键   k>=| n - m |    这代表什么意思呢

这代表 先手的人 拿一次  有办法将两堆石子变成一样多的状态 

这有什么用呢  有大用处 我们很容易可以发现

面对两堆一样多的石子  先手必败  因为先手不论怎么取 对手都可以在另一堆做同样的操作  直到先手的人输

那么好了 这个题  由于k的范围限制  导致先手的人一定可以把两堆变成一样多 从而轮到对手取拿 对手必输

 

所以 n==m 必输  否则 必赢

#include
int main(){
    int n,m,k;
    while(~scanf("%d%d%d",&n,&m,&k)){
        if(n!=m)printf("HAI YOU SEI!\n");
        else printf("LAOZI CHUI SI NI!\n");
    }
}

 

 

 

 

 

 

 

 

 

 

你可能感兴趣的:(博弈论)