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

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

生活随笔

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

编程问答

1.16 24点游戏

發(fā)布時(shí)間:2025/3/15 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 1.16 24点游戏 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

?

24點(diǎn)游戲的解決辦法,也是采取窮舉法的思路,4個(gè)數(shù),有4!=24中排列的方法,然后3個(gè)操作符號(hào),有4×4×4 = 64種結(jié)果,再加上括號(hào),有5種結(jié)果,于是,每4個(gè)數(shù)有24*66*5 = 7680中結(jié)果。

為了簡(jiǎn)便計(jì)算,原書(shū)中給出的第一種方法采取這樣一種遞歸的思路:

1 /* 2 <編程之美> 3 深搜 4 遍歷運(yùn)算符, 數(shù)和括號(hào)的所有排列形式 5 */ 6 #include <iostream> 7 #include <string> 8 #include <math.h> 9 10 using namespace std; 11 12 const double Threshold = 1e-6; 13 const int CardsNumber = 4; 14 const int ResultValue = 24; 15 double number[CardsNumber]; 16 string result[CardsNumber]; 17 18 bool PointGame(int n) 19 { 20 if(n == 1) 21 { 22 if(fabs(number[0] - ResultValue) < Threshold) 23 { 24 cout << result[0] << endl; 25 return true; 26 } 27 else 28 { 29 return false; 30 } 31 } 32 33 for(int i = 0; i < n; i++) 34 { 35 for(int j = i +1 ; j < n; j++) 36 { 37 double a, b; 38 string expa, expb; 39 40 a = number[i]; 41 b = number[j]; 42 number[j] = number[n - 1]; 43 44 expa = result[i]; 45 expb = result[j]; 46 result[j] = result[n-1]; 47 48 //+加法操作 a+b 49 number[i] = a + b; 50 result[i] = '(' + expa + '+' + expb + ')'; 51 if(PointGame(n-1)) 52 { 53 return true; 54 } 55 56 //減法操作 a-b 57 number[i] = a - b; 58 result[i] = '(' + expa + '-' + expb + ')'; 59 if(PointGame(n-1)) 60 { 61 return true; 62 } 63 64 //減法操作 b-a 65 number[i] = b - a; 66 result[i] = '(' + expb + '-' + expa + ')'; 67 if(PointGame(n-1)) 68 { 69 return true; 70 } 71 72 //乘法操作 a*b 73 number[i] = a * b; 74 result[i] = '(' + expa + '*' + expb + ')'; 75 if(PointGame(n-1)) 76 { 77 return true; 78 } 79 80 //除法操作 a/b, 如果除數(shù)不為0 81 if(b != 0) 82 { 83 number[i] = a / b; 84 result[i] = '(' + expa + '/' + expb + ')'; 85 if(PointGame(n-1)) 86 { 87 return true; 88 } 89 } 90 91 //除法操作 b/a , 如果除數(shù)不為0 92 if(a != 0) 93 { 94 number[i] = b / a; 95 result[i] = '(' + expb + '/' + expa + ')'; 96 if(PointGame(n-1)) 97 { 98 return true; 99 } 100 } 101 102 number[i] = a; 103 number[j] = b; 104 result[i] = expa; 105 result[j] = expb; 106 107 } 108 } 109 return false; 110 111 } 112 113 int main() 114 { 115 int x; 116 for(int i =0; i< CardsNumber; i++) 117 { 118 char buffer[20]; 119 cout << "the " << i << "the number: "; 120 cin >> x; 121 number[i] = x; 122 itoa(x,buffer,10); 123 result[i] = buffer; 124 125 } 126 127 if(PointGame(CardsNumber)) 128 { 129 cout << "Success" << endl; 130 131 } 132 else 133 { 134 cout << "failure" << endl; 135 } 136 system("pause"); 137 return 0; 138 }

?

?

轉(zhuǎn)載于:https://www.cnblogs.com/CBDoctor/archive/2012/07/30/2615014.html

總結(jié)

以上是生活随笔為你收集整理的1.16 24点游戏的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

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