小編給大家分享一下C語言如何實現(xiàn)24點游戲,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
在赤城等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強發(fā)展的系統(tǒng)性、市場前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供成都做網(wǎng)站、網(wǎng)站制作 網(wǎng)站設(shè)計制作定制網(wǎng)站建設(shè),公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),高端網(wǎng)站設(shè)計,營銷型網(wǎng)站建設(shè),成都外貿(mào)網(wǎng)站建設(shè),赤城網(wǎng)站建設(shè)費用合理。
將算法實現(xiàn)改成C語言,并可在linux服務(wù)器上運行。同時修改為可顯示所有結(jié)果。
注:如果傳參重復(fù),如4,4,7,7這樣,會回顯重復(fù)結(jié)果,暫無法清除。
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <math.h> const double PRECISION = 1E-6; #define COUNT 4 const int RESULT = 24; #define STRLEN 50 double number[COUNT] = {0}; //這里一定要用double, char expression[COUNT][STRLEN] = {0}; //保存表達式 #define TRUE 1 #define FALSE 0 int cnt = 0; void Test(int n) { int i = 0; int j = 0; int len = 0; //遞歸結(jié)束 if(1 == n){ if(number[0] == RESULT) { // 避免輸出前后括號 for (i = 1; i < strlen(expression[0]) - 1; i++) { printf("%c", expression[0][i]); } printf("\n"); cnt++; return; } else return; } //遞歸過程 for(i=0;i<n;i++){ for(j=i+1;j<n;j++){ double a,b; char expa[STRLEN] = {0}; char expb[STRLEN] = {0}; a=number[i]; b=number[j]; // 刪除number[j]元素,用number[n-1]填補 number[j]=number[n-1]; strcpy(expa, expression[i]); strcpy(expb, expression[j]); // 刪除expression[j]元素,用expression[n-1]填補 strcpy(expression[j], expression[n-1]); // 加法 len= strlen(expression[i]); snprintf(expression[i], STRLEN, "(%s+%s)", expa, expb); number[i]=a+b; Test(n-1); //減號有兩種情況,a-b與b-a len= strlen(expression[i]); snprintf(expression[i], STRLEN, "(%s-%s)", expa, expb); number[i]=a-b; Test(n-1); if(a != b) { len= strlen(expression[i]); snprintf(expression[i], STRLEN, "(%s-%s)", expb, expa); number[i]=b-a; Test(n-1); } // 乘法 len= strlen(expression[i]); snprintf(expression[i], STRLEN, "(%s*%s)", expa, expb); number[i]=a*b; Test(n-1); //除法也有兩種情況,a/b與b/a if(b!=0){ len= strlen(expression[i]); snprintf(expression[i], STRLEN, "(%s/%s)", expa, expb); number[i]=a/b; Test(n-1); } if((a!=0) && (a != b)){ len= strlen(expression[i]); snprintf(expression[i], STRLEN, "(%s/%s)", expb, expa); number[i]=b/a; Test(n-1); } //恢復(fù)數(shù)組 number[i]=a; number[j]=b; strcpy(expression[i], expa); strcpy(expression[j], expb); } } return; } int main(int argc, char **argv) { int i = 0; if(5 != argc) { printf("arg err\n"); return 0; } for(i=0;i<COUNT;i++) { char buffer[20]; number[i] = atoi(argv[i + 1]); strcpy(expression[i], argv[i + 1]); } Test(COUNT); if(0 != cnt) { printf("Total[%d], Success\n", cnt); } else { printf("Fail\n"); } return 0; }
運行結(jié)果如下:
andy@ubuntu14:~/work$ ./test 5 6 7 8 ((5+7)-8)*6 (5+7)*(8-6) 8/((7-5)/6) (6/(7-5))*8 6/((7-5)/8) (8/(7-5))*6 (6*8)/(7-5) ((5-8)+7)*6 (7-(8-5))*6 (5+7)*(8-6) (6*8)/(7-5) (5+(7-8))*6 (5-(8-7))*6 Total[13], Success andy@ubuntu14:~/work$ ./test 7 7 7 7 Fail
以上是“C語言如何實現(xiàn)24點游戲”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!
新聞名稱:C語言如何實現(xiàn)24點游戲
當前網(wǎng)址:http://jinyejixie.com/article24/pgijje.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站建設(shè)、App設(shè)計、網(wǎng)站制作、定制網(wǎng)站、App開發(fā)、網(wǎng)站內(nèi)鏈
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)