hdu 1427速算24點(列舉全排列)

2021-07-02 13:05:48 字數 1095 閱讀 5370



題意: 算24點相信絕大多數人都玩過。就是隨機給你四張牌,包括a(1),2,3,4,5,6,7,8,9,10,j(11),q(12),k(13)。要求只用'+','-','*','/'運算子以及括號改變運算順序,使得最終運算結果為24(每個數必須且僅能用一次)。遊戲很簡單,但遇到無解的情況往往讓人很鬱悶。你的任務就是針對每一組隨機產生的四張牌,判斷是否有解。我們另外規定,整個計算過程中都不能出現小數

e鳴杯碰到過這道題,當時手算沒算出來現在算報了一箭之仇了吧蛤蛤。但是不一樣的是這道題運算過程中不會出現小數,有乙個坑是當輸入是10的時候其實我唯讀了1,這也是一開始老wa的原因。

這道題直接暴力有點不和諧,所以可以用next_permutation()來做,總結一下,其實所有運算都可以歸結為兩類,一類是((

a@b)@c)@d

另一類是

(a@b)@(c@d

)因為只有四個數,所以這麼做沒問題,但當運算元增多的時候就有點麻煩了,這時候可以考慮遞迴來做

**如下:

#include#include#include#include#include#include#include#include#include#include#include#include#includeusing namespace std;  

#define ll long long

const int inf = 100000000;

int a[6];

int sol_input(char ch)

int oper(int i, int m, int n)

bool calcu1(int i, int j, int k)

bool calcu2(int i, int j, int k)

int main()

int flag = 0;

sort(a, a+4);

do } while(next_permutation(a, a+4) && !flag);

if(flag) printf("yes\n");

else printf("no\n");

} return 0;

}

hdu1427 速算24點 dfs(暴力列舉)

輕觸即可跳轉到hdu 1427 problem description 速算24點相信絕大多數人都玩過。就是隨機給你四張牌,包括a 1 2,3,4,5,6,7,8,9,10,j 11 q 12 k 13 要求只用 運算子以及括號改變運算順序,使得最終運算結果為24 每個數必須且僅能用一次 遊戲很簡單...

HDU 1427 速算24點 (尚未完成)

problem description 速算24點相信絕大多數人都玩過。就是隨機給你四張牌,包括a 1 2,3,4,5,6,7,8,9,10,j 11 q 12 k 13 要求只用 運算子以及括號改變運算順序,使得最終運算結果為24 每個數必須且僅能用一次 遊戲很簡單,但遇到無解的情況往往讓人很鬱悶...

hdu 1692 列舉 剪枝

題意 給你一些井的資訊,井中原有的水,當井中的水滿足一定量後會被破壞並且這些水全部流入下乙個井中,用多少能量能直接破壞這個井。然後問要想破壞第n口井至少要多少能量。解題思路 這題首先是要找到從哪口井開始破壞,因為要破壞第n口井,要麼直接破壞n,要麼n之前有連續的幾口井一同被破壞,如果中間出現了乙個不...