date:2019/10/25
degree of difficulty: ( 普及+/提高
original question:p1236 算24點
g24點,乙個從小就開始玩的遊戲
小學奧數終於又對我下手了
這道題有多種解法,乙個就是dfs爆搜,題解上還有字尾表示式和棧來做的,我還是不太會資料結構,就先用dfs寫了
先看目錄
dfs思路
坑點ac code
二十四點,如果做運算的話,每次肯定會有兩個數變成乙個數,
每次都是兩個數變成乙個數,而運算就只有四種情況,+ - * /
所以我們得到乙個思路,分四步dfs,
每次將運算完的結果存到1個數中,並把另乙個數打上標記,
這樣經過3步就可以得到最後的乙個數。
如在2+1 = 3
中,我們抽出2 和 1 進行運算,得到的結果是3,那麼就用3來更新第乙個數1,並把2打上標記,下一次就不挑這個位置了;
這時,我們只需判斷最後的計算結果是不是24就可以了
!這就要求我們在dfs中注意存貯的問題,具體見**
思路是:用乙個陣列,把每次運算的兩個數字存起來,再把運算子用數字代替再存起來;
輸出的時候在判斷;
#include
#include
using
namespace std;
int a[4]
[4],num[5]
,fl=-1
;bool check ()}
return
false;}
void
print()
}void
dfs(
int t)
}int x,y;
for(
int i =
1; i <=
4;i++)}
}}}int
main()
dfs(1)
;if(fl ==-1
)return0;
}
洛谷 P1236 算24點
題目描述 幾十年前全世界就流行一種數字遊戲,至今仍有人樂此不疲 在中國我們把這種遊戲稱為 算24點 您作為遊戲者將得到4個1 9之間的自然數作為運算元,而您的任務是對這4個運算元進行適當的算術運算,要求運算結果等於24。您可以使用的運算只有 您還可以使用 來改變運算順序。注意 所有的中間結果須是整數...
洛谷 P1236 算24點
題目描述 幾十年前全世界就流行一種數字遊戲,至今仍有人樂此不疲 在中國我們把這種遊戲稱為 算24點 您作為遊戲者將得到4個1 9之間的自然數作為運算元,而您的任務是對這4個運算元進行適當的算術運算,要求運算結果等於24。您可以使用的運算只有 您還可以使用 來改變運算順序。注意 所有的中間結果須是整數...
洛谷 P1236 算24點
我對狀態空間的理解 題目傳送門 算 24 點應該是大家耳熟能詳的遊戲了 這題 spj 要求把兩個要運算的數字較大的放在前面輸出 然後爆搜數字順序和運算子就可以了 真 暴力美學 時間複雜度 o 4 4 3 空間複雜度 o n 如下 include include include using names...