有一種遊戲叫做24點,首先是拿一副牌,每次抽出4張,然後利用+,-,*,/四種運算,每張牌只能用一次,而且像10/3這種有餘數的運算不能算,結果能算出24點嗎?(說明:j到k都是算10點,不論花色的)
由於無聊,所以在火車上想起了這種遊戲,當我們想不出來時,能不能寫個程式來解決呢?這是當時決定寫這個程式的原因。
演算法:暴力法,想下四張牌放在臺面上,然後往牌中間填三個運算子,列舉四張牌和三個運算子的可能組合,牌的組合有4*3*2*1種,運算子有4*4*4中,然後總的列舉次數是1536種
要注意的細節是算符優先順序問題,其實只要考慮兩種情況就行,首先是因為是列舉牌的組合,所以一是不用考慮優先順序,依次由由右往左依次做運算就行,還有一種是前兩張先運算,然後是後兩張運算,最後是兩次運算的結果再做運算就行,下面是自己寫的程式,寫得不好求評:
view code
1 #include 2 #include3 #include 4
5int a[4];6
char op = ;78
int ok(int k1, int k2, int k3, int k4, char op1, char op2, char
op3);
9int op_num(int aa, int bb, char
op_op);
10void
init_scanf();
11int judge(int k1, int k2, int k3, int
k4);
1213
int judge(int k1, int k2, int k3, int
k4)1427}
28}29}
30return1;
31}3233
int ok(int k1, int k2, int k3, int k4, char op1, char op2, char
op3)
3453
else
5471}72
return0;
73}7475
int op_num(int aa, int bb, char
op_op)
7686
default: return -9999;87
}88}89
90void
init_scanf()
91124
}125
}126
}127
}128
}129
}130
131 printf("
no\n");
132}
133134
int main(void
)135
143 system("
pause");
144return0;
145 }
24點紙牌遊戲計算器
includebool flag 判斷是否有解 function 兩個數之間的計算 param float x 第乙個數 float y 第二個數 int z 運算符號 return float 運算結果 float calculate float x,float y,int z function ...
C語言 紙牌計算24點小遊戲
c語言實現紙牌計算24點小遊戲 利用系統時間設定隨機種子生成4個隨機數,並對4個數字之間的運算次序以及運算符號進行列舉,從而計算判斷是否能得出24,以達到程式目的。程式主要功能已完成,目前還有部分細節未處理,待完成ing.對於 中的錯誤,懇請批評指正。遊戲描述 a 10 分別代表數字 1 10。j,...
C語言實現紙牌24點小遊戲
此程式參考c語言實現經典24點紙牌益智遊戲,並做出一些改進。一 題目要求 24點遊戲規則 從撲克中每次取出4張牌。使用加減乘除,第乙個能得出24者為贏。其中,j代表11,q代表12,k代表13,a代表1 按照要求程式設計解決24點遊戲。基本要求 隨機生成4個代表撲克牌牌面的數字字母,程式自動列出所有...