本文為大家分享了經(jīng)典24點(diǎn)紙牌益智游戲的具體實(shí)現(xiàn)方法,供大家參考,具體內(nèi)容如下
創(chuàng)新互聯(lián)建站是一家專業(yè)提供灌南企業(yè)網(wǎng)站建設(shè),專注與網(wǎng)站設(shè)計(jì)、做網(wǎng)站、H5頁面制作、小程序制作等業(yè)務(wù)。10年已為灌南眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)網(wǎng)絡(luò)公司優(yōu)惠進(jìn)行中。
一.實(shí)驗(yàn)內(nèi)容
24點(diǎn)游戲是經(jīng)典的紙牌益智游戲。
常見游戲規(guī)則:
從撲克中每次取出4張牌。使用加減乘除,第一個(gè)能得出24者為贏。(其中,J代表11,Q代表12,K代表13,A代表1),按照要求編程解決24點(diǎn)游戲。
基本要求: 隨機(jī)生成4個(gè)代表撲克牌牌面的數(shù)字字母,程序自動列出所有可能算出24的表達(dá)式,用擅長的語言(C/C++/Java或其他均可)實(shí)現(xiàn)程序解決問題。
1.程序風(fēng)格良好(使用自定義注釋模板)
2.列出表達(dá)式無重復(fù)。
二.算法設(shè)計(jì)思路
算法描述:
1.通過rand()函數(shù)生成4個(gè)隨機(jī)數(shù)
2.通過F()函數(shù)進(jìn)行遞歸調(diào)用
3.首先將數(shù)組A中的兩個(gè)數(shù)進(jìn)行運(yùn)算,得到結(jié)果,然后通過遞歸調(diào)用將結(jié)果與下一個(gè)數(shù)字運(yùn)算,得到結(jié)果再通過遞歸調(diào)用,與最后一個(gè)數(shù)進(jìn)行運(yùn)算
4.遞歸過程中,判斷是否(n==1&&A[0]==24),滿足條件則輸出結(jié)果。最后通過count最終知道有多少種解法
三.代碼實(shí)現(xiàn)
#include#include #include #include #include using namespace std; int n=4; //三次運(yùn)算標(biāo)記值 double A[4]={0}; //存儲4個(gè)數(shù)字 char oper[4]={'+','-','*','/'}; //存儲運(yùn)算符 string B[4]; int count=0; int F(int n){ //判斷是否已完成三次運(yùn)算 if(n==1){ if(A[0]==24) //判斷結(jié)果是否為24 { cout<
四.測試及運(yùn)行結(jié)果
五.經(jīng)驗(yàn)歸納
這次的程序設(shè)計(jì)采用了遞歸調(diào)用的方式,使得問題一步步化簡,即每次都是兩個(gè)數(shù)字進(jìn)行運(yùn)算,得到結(jié)果,結(jié)果再與下一個(gè)數(shù)字進(jìn)行運(yùn)算,直到滿足終止條件,結(jié)束遞歸。遞歸這種思想雖然很好寫出,但難以理解,尤其是對一些大型的算法。通過這次的程序設(shè)計(jì),我對遞歸有了更深的認(rèn)識。雖然遞歸的執(zhí)行效率很低,但是有一些問題必須使用遞歸解決,因此我會在以后的程序設(shè)計(jì)中經(jīng)常用到遞歸,提高對于遞歸的理解能力。
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持創(chuàng)新互聯(lián)。