題意: 算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之前有連續的幾口井一同被破壞,如果中間出現了乙個不...