題目位址
1、考慮字串變換規律,是交換相鄰的兩個數字
2、因為數字搜尋沒有明顯的邊界,所以可以考慮廣度優先搜尋,或者迭代加深搜尋;
以下是逐步分析
#include
#include
#include
#include
#include
using
namespace
std;
const
int maxn = 666667;
const
int inf = 20021020;
bool vis [maxn],fl=false;
int ans=0,f[maxn];
int dv[7]= ;
int qread()
while (ch>='0'&&ch<='9')
return f*x;
}int st,ed;
dv陣列方便於把乙個六位整數拆分開,它的具體操作可以參見下面的**。
maxn,inf分別代表最大組合情況和絕大值。
陣列vis用作判重,f陣列可以執行剪枝。
全域性變數 ans用作列舉答案。
仍有部分陣列空間浪費了,例如vis[659000]等
int qread()是快速讀入函式,習慣性的加上
st代表起始位置,ed代表結束位置
以上是並不完美的開頭
int take_out(int
x,int w)
int cha(int
x,int w)
x/dv[w]可以砍掉x第w位以後的數,然後對10取餘可以得到特定位。
函式int cha(int x,int w)交換兩位數字。它基於take_out函式。
void dfs(int x,int
sum)
for (int i=1; i<=5; i++)
}
深度優先搜尋部分;
如果當前解大於已經找到的最優解,就切斷這一分支路線。
如果當前x的解大於上次找到的x的解,也切斷這一分支路線。
注意坑點,ans<=2要加2
以下是主函式:
int main()
for (int i=1; iwhile (true)
return
0;}
注意st==ed的特判,要輸出2的;
初始化vis和f陣列,列舉ans值
洛谷 P1759 通天之潛水
直達通天路 小a歷險記第三篇 在猴王的幫助下,小a終於走出了這篇荒山,卻發現一條波濤洶湧的河攔在了自己的面前。河面上並沒有船,但好在小a有n個潛水工具。由於他還要背重重的揹包,所以他只能背m重的工具,又因為他的力氣並不是無限的,河卻很寬,所以他只能背有v阻力的工具。但是這條河下有非常重要的資料,所以...
P1760 通天之漢諾塔
直達通天路 小a歷險記第四篇 在你的幫助下,小a成功收集到了寶貴的資料,他終於來到了傳說中連線通天路的通天山。但是這距離通天路仍然有一段距離,但是小a突然發現他沒有地圖!但是幸運的是,他在山腳下發現了乙個寶箱。根據經驗判斷 小a有經驗嗎?地圖應該就在其中!在寶箱上,有三根柱子以及在一根柱子上的n個圓...
洛谷 P1759 通天之潛水
題目提供者lych 標籤動態規劃洛谷原創 難度普及 提高 提交該題 討論 題解記錄 直達通天路 小a歷險記第三篇在猴王的幫助下,小a終於走出了這篇荒山,卻發現一條波濤洶湧的河攔在了自己的面前。河面上並沒有船,但好在小a有n個潛水工具。由於他還要背重重的揹包,所以他只能背m重的工具,又因為他的力氣並不...