日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

C语言解决常胜将军问题

發(fā)布時(shí)間:2024/1/18 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C语言解决常胜将军问题 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

問(wèn)題描述

有21張紙牌,兩個(gè)人依次取,每次每人只可以取走1~4張,不能多取,也不能不取,誰(shuí)取到最后一張誰(shuí)輸。編寫(xiě)一個(gè)人機(jī)對(duì)弈程序,要求人先取,計(jì)算機(jī)后取;結(jié)果計(jì)算機(jī)為“常勝將軍”。

問(wèn)題分析:

這樣思考這個(gè)問(wèn)題,要想讓計(jì)算機(jī)是“常勝將軍”,也就是要然取到最后1張紙牌。這樣只有一種可能,就是讓計(jì)算機(jī)只剩1張紙牌給人,因?yàn)榇藭r(shí)人至少取1張紙牌。其他的情況都不能保證計(jì)算機(jī)常勝。

于是,問(wèn)題轉(zhuǎn)化為“有20張紙牌,兩人輪流取,每人每次可以取走1~4張,不可多取,也不能不取,要求人先取,計(jì)算機(jī)后取,誰(shuí)取到最后一張紙牌誰(shuí)贏”。為了計(jì)算機(jī)能夠取到最后一張紙牌,就要保證最后一輪抽取(人先取一次,計(jì)算機(jī)再取一次)之前剩下5根火柴。因?yàn)橹挥羞@樣才能保證無(wú)論人怎樣取火柴,計(jì)算機(jī)能將其余的火柴全部取走。

于是,問(wèn)題又轉(zhuǎn)化為“15張紙牌,兩人輪流取,每人每次可以取走1~4張,不可多取,也不能不取,要求人先取,計(jì)算機(jī)后取,保證計(jì)算機(jī)取到最后一張紙牌”。同樣的道理,為了讓計(jì)算機(jī)取到最后一張紙牌,就要保證最后一輪的抽取(人先取一次,計(jì)算機(jī)再取一次)之前剩下五根火柴。

于是,問(wèn)題又轉(zhuǎn)化為10張紙牌的問(wèn)題...,依次類推。

算法設(shè)計(jì):

根據(jù)以上分析,可以得出這樣的結(jié)論:21根紙牌,在人先取計(jì)算機(jī)后取。每次取1~4張的前提下,只要保證每一輪的抽取(人先抽取一次,計(jì)算機(jī)再取一次)時(shí),人抽到的紙牌數(shù)與計(jì)算機(jī)抽到的紙牌數(shù)之和為5,就可以實(shí)現(xiàn)計(jì)算機(jī)的常勝不敗。

完整代碼如下:

#include <stdio.h>int main() {int computer,people,spare = 21;printf("---------------------------------\n");printf("--------快樂(lè)碼呀 www.happymaya.cn---------\n");printf("--------你不能戰(zhàn)勝我,不信試試---------\n");printf("---------------------------------\n\n");printf("Game begin:\n\n");int flag = 1;while(flag){printf("--------目前還有紙牌%d張---------\n",spare);printf("People:");scanf("%d",&people);if(people<1 || people>4 || people>spare){printf("你違規(guī)了,你取得紙牌數(shù)量有問(wèn)題!\n\n");continue;}spare = spare - people;if(spare == 0) {printf("\nComputer win! Game Over!\n");break;}computer = 5- people;spare = spare - computer;printf("Computer:%d \n",computer);if(spare == 0){printf("\nPeople win! Game Over!\n");break;}}return 0; }

運(yùn)行結(jié)果,如下圖:

待續(xù)......

若有不足,請(qǐng)大家多多指教!

總結(jié)

以上是生活随笔為你收集整理的C语言解决常胜将军问题的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。