DFS P1236 算24點 普及 提高

2021-09-28 23:42:48 字數 1263 閱讀 6479

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...