一道演算法題,沒有思路,該怎麼解?

時間 2021-06-02 17:04:49

1樓:左方園

與@張一釗 和 @默然 回答差不多,我能想到的是,可以構建乙個圖,然後做BFS,當然可以不用顯式構造這個圖,直接用乙個佇列然後BFS,搜到指定結果就返回(一定有解的情況下)。

具體的思路是這樣的:以題目中的示例為例,可以這樣構建乙個圖,圖的起點是0,從起點出發有四條邊,依次是1,2,6,8,到達的點依次是值為1,2,6,8的點。然後從值為1點出發,可以有七條邊,依次是1,2,6,8,+,-, *,到達點的值依次是11、12、16、18、1、1、1。

然後依此類推。具體的圖如下:

或許從數學上能找到些優化的技巧。

2樓:張一釗

這個直接BFS就出來了吧...

仔細看了一下,發現並不是BFS。實際上這個問題可以轉化為最短路問題。

首先預處理出可以直接由可用數字組合出的數,記為.可用的運算的集合記為. 乙個數的長度記為.

把每個數看做圖中的乙個節點.對於兩個數,如存在數與二元運算,使得,則在與之間連一條長度為的邊.

建立乙個虛擬節點,從向每個數連一條長度為的邊.

計算以為源點的單源最短路.則對於每個數,從到的最短路長度即為答案.

當然沒有必要把這個圖顯式的建出來,轉移或者鬆弛的時候建就可以了。

一道數獨演算法題,大家一起討論一下最優解。?

wkGCaSS 答非所問了。摺疊我吧 不知這樣行不行 1.找出每個空格子的所有可填的數字 2.找出乙個格仔,這個格仔 1.可填數字最少,2.行 列 九宮內已填數字最多。如果有同時滿足條件的就取滿足條件的其中之一 3.對這個格仔嘗試填入乙個數 4.重複1到3直到成功 失敗則退回上一次猜測。 陳碩 Ma...

一道物理問題,怎麼解?

不會,小塊的受合力是沿斜面向下,加速度和合力的方向一致,速度從0開始力的方向不會變,那速度會一直沿合力方向並且大小增加。求速度是初中物理題,就不發了 系統在水平方向無外力,因此在運動過程中水平方向的動量和為0。當m開始下落後,由於支撐力的作用,m滑塊獲得水平方向的速度,M獲得相反方向的速度,兩者的動...

有一道資料結構順序表的題,怎麼解?

皮皮關 遇到困難的問題不要迷茫,先試著分解它。這道題屬於鍊錶綜合問題,第二問略有難度。不要緊,先看第一問,第一問比較基礎。當然,要解答第一問,只需要熟悉鍊錶的基本做法。先問問自己是否熟悉鍊錶的基本操作,鍊錶節點定義為 include include include struct Node 基本用法 ...