最小運算元

2021-06-16 22:42:38 字數 1850 閱讀 6496

給了a、b兩個單詞和乙個單詞集合dict,每個的長度都相同。我們希望通過若干次操作把單詞a變成單詞b,每次操作可以改變單詞中的乙個字母,同時,新產生的單詞必須是在給定的單詞集合dict中。求所有行得通步數最少的修改方法。    

舉個例子如下: given:    a = "hit"    b = "cog"    dict = ["hot","dot","dog","lot","log"] 

return  [    ["hit","hot","dot","dog","cog"],    ["hit","hot","lot","log","cog"]  ]     

即把字串a = "hit"轉變成字串b = "cog",有以下兩種可能: 

"hit" -> "hot" ->  "dot" ->  "dog" -> "cog"; 

"hit" ->  "hot" ->  "lot" ->  "log"  ->"cog"。 

首先把所有的單詞放到乙個列表裡面,然後組成乙個無相圖,然後從a點開始查詢到b點的最短路徑,使用了dijkstra演算法 來查詢最短路徑,然後把路徑都打出來。。我用題目的測試用例是通過了,自己寫了幾個測試用例也過了,但是提交以後失敗了。。。汗。。**寫得很匆忙。。非常亂哈。。總結一下再發出來,大家做過嗎,都過了麼。。。殘念啊。。。好久沒寫過演算法了,,**了。。。

#include #include #include #include #include #include using namespace std;

class solution

;

//比較函式,比較兩個字串的差別是否為1,如果不唯一,返回-1

int cmp(string a,string b)

if(flag==1)

return 0;

else

return -1;

}//輔助函式,返回向量中最後乙個元素的索引

int last(string str,vectorstrv)

}//主函式

vector< vector> findladders(string start, string end, set& dict)

//構造二維向量列的長度

waylist.resize(max_len);

//如果有向量和start只相差乙個字元,就將向量新增到二維向量表中

for(int i=0;i0)

// end if(cmp(waylist[i].back(),str.at(j))==0)

}// end if(waylist[i].size()>0)

}//end for

}// end if(i!=1)

}//end for

//找到重複路徑,表示已經檢索完畢,結束迴圈

if(flag==1)

break;

}//end while

for(int i=0;i> res;

set strset;

strset.insert("hot");

strset.insert("dot");

strset.insert("dog");

strset.insert("lot");

strset.insert("log");

std::cout << "cog" for(int i=0;i";

cout << " " << endl; }

return 0;

}

輸出:

hit-->hot-->lot-->log-->cog--> 

hit-->hot-->dot-->dog-->cog--> 

結果還是失敗。。呵呵。。。

最小運算元

剛才在剛果準備挑戰最小運算元的。可是操作失誤,調教了白 在自己電腦上用c 環境試了試。竟然花了3個小時,哎,挑戰也是失敗了。題目詳情 給了a b兩個單詞和乙個單詞集合dict,每個的長度都相同。我們希望通過若干次操作把單詞a變成單詞b,每次操作可以改變單詞中的乙個字母,同時,新產生的單詞必須是在給定...

最小運算元遞迴實現

題目 給了a b兩個單詞和乙個單詞集合dict,每個的長度都相同。我們希望通過若干次操作把單詞a變成單詞b,每次操作可以改變單詞中的乙個字母,同時,新產生的單詞必須是在給定的單詞集合dict中。求所有行得通步數最少的修改方法。舉個例子如下 given a hit b cog dict hot dot...

25最小運算元問題

題目描述 給定乙個單詞集合dict,其中每個單詞的長度都相同。現從此單詞集合dict中抽取兩個單詞a b。希望通過若干次操作把單詞a變成單詞b,每次操作可以改變單詞的乙個字母,同時,每次操作後,新產生的單詞必須是在給定的單詞集合dict中。求所有行得通步數最少的修改方法。舉個例子如下 given a...