本文主要是介绍博弈--两堆一样多的石子,先手必败,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
哈理工校赛的一道博弈题
当时想了好久,都已经摸到答案的边了,最后还是没做对。傻逼了。
还是做博弈做的太少。
题目中k的范围 是关键 k>=| n - m | 这代表什么意思呢
这代表 先手的人 拿一次 有办法将两堆石子变成一样多的状态
这有什么用呢 有大用处 我们很容易可以发现
面对两堆一样多的石子 先手必败 因为先手不论怎么取 对手都可以在另一堆做同样的操作 直到先手的人输
那么好了 这个题 由于k的范围限制 导致先手的人一定可以把两堆变成一样多 从而轮到对手取拿 对手必输
所以 n==m 必输 否则 必赢
#include<stdio.h>
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");}
}
这篇关于博弈--两堆一样多的石子,先手必败的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!