C语言取牌游戏

本文介绍了如何用C语言编写一个模拟计算机先手且必胜的取牌游戏算法。游戏规则是54张牌,两人轮流取,每次1到4张,最后拿牌者输。通过分析,计算机首次取牌后,每次确保与人取牌之和为5张,以此确保胜利。
摘要由CSDN通过智能技术生成

取牌游戏

有54张扑克牌,两个人轮流拿牌,每人每次最少取1张,最多取4张,谁拿最后一张谁输。编写模拟计算机先拿牌且必胜的算法。

分析:
为了保证计算机胜利,因此最后的牌必须是人取到,而且只能剩余1张。通过观察发现,除去最后一张牌,还剩余53张牌。

除去第一次计算机取牌,之后的每次计算机如果要赢得游戏,可以根据人取了多少张牌进行调整,以保证剩余最后一张只能给人取到。

由于人与计算机的取牌数量局限在[1,4],因此人机每次合计取牌可控制为(1+4)=5张。

因此计算机取牌为了保证胜利,N1=(54-1)%5(求余)
之后,计算机根据人出了多少牌进行调整,保证每次人机取牌总数为5。
即:
人取1张,计算机取4张
人取2张,计算机取3张
人取3张,计算机取2张
人取4张,计算机取1张
这样可以保证计算机先拿牌且必胜。

//取牌必胜算法//
#include<stdio.h>
int main(){
	int total=54; //剩余牌总数 
	int who; //标记是人还是计算机取牌,0是计算机取,1是人取
	int num; //出牌数,大于等于1且小于等4
	int n0; //计算机先取牌数 
	int N=5; //人机调整范围
	printf("******欢迎参加取牌游戏******\n"); 
	who=0;
	printf("\n标记%d\n",who);
	printf
  • 3
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值