operator=' にマッチしない等号の両端がマッチしない
2022-02-12 22:16:40
const auto new_states = state_extend_function(word,dict,visited,end);
unordered_set<string>::iterator itv;
for ( itv=new_states.begin();itv ! = new_states.end();itv++ ){
string state=*itv;// manipulate state
}
エラーの報告
Solution.h:72:15: error: no match for 'operator=' (operand types are 'std')
等号の両端が一致しないのは、C++11版のautoが異なるためと思われます。以下のように変更すると通るようになります。
unordered_set<string> new_states = state_extend_function(word,dict,visited,end);
. 元のコードと修正後のフルコードは以下の通りです。。。。。。
2つの単語(開始と終了)と辞書があるとき、開始と終了のすべての遷移の最短列を求めよ。
例えば
-
<スパン
一度に変更できるのは1文字のみです。
-
<スパン
変換過程の中間単語が辞書に掲載されていること。
備考
1. すべての単語の長さが同じである。
2. すべての単語は小文字のみを含む。
1. すべての単語の長さが同じである。
2. すべての単語は小文字のみを含む。
<スパン
サンプル
データは以下のように与えられます。
<スパン スタート "ヒット"
エンド <スパン cog"。
ディクト = <スパン ["hot","dot","dog","lot","log"] となります。
<スパン 戻る
[
<スパン ["hit","hot","dot","dog","cog"] となります。
["hit","hot","lot","log","cog"]。
<スパン ]
#include <iostream>
#include <vector>
#include <limits.h>
#include <string>
#include <queue>
#include <unordered_set>
#include <unordered_map>
using namespace std;
void gen_path(unordered_map<string, vector<string> > &father,
vector<string> &path, const string &start, const string &word,
vector<vector<string> > &result) {
path.push_back(word);
if (word == start) {
result.push_back(path);
reverse(result.back().begin(), result.back().end());
} else {
vector<string> ::iterator itfv;// for (const auto& f : father[word]) {
for (itfv = (father[word]).begin();itfv ! = (father[word]).end();itfv++ ) {
auto f=*itfv;
gen_path(father, path, start, f, result);
}
}
path.pop_back();
}
unordered_set<string> state_extend_function(const string &s,
const unordered_set<string> &dict, unordered_set<string> visited,string end) {
unordered_set<string> result;
for (size_t i = 0; i < s.size(); ++i) {
string new_word(s);
for (char c = 'a'; c <= 'z'; c++) {
if (c == new_word[i]) continue;
swap(c, new_word[i]);
if ((dict.count(new_word) > 0 || string(new_word) == string(end) ) &&
!visited.count(new_word)) {
result.insert(new_word);
}
swap(c, new_word[i]); // recover the word
}
}
return result;
}
vector<vector<string> > findLadders(string start, string end,
const unordered_set<string> &dict) {
unordered_set<string> current, next; // current level, next level, use set for de-duplication
unordered_set<string> visited; // discriminate
unordered_map<string, vector<string> > father; // tree
bool found = false;
auto state_is_target = [&](const string &s) {
return s == end;
};
current.insert(start);
while (!current.empty() && !found) {
// first set all of this level to accessed to prevent the same level from pointing to each other for(const auto& word:current)
unordered_set<string>::iterator it;
for ( it=current.begin();it ! = current.end();it++ ){
string word=*it;
visited.insert(word);
}
unordered_set<string>::iterator itc;
for ( itc=current.begin();itc ! = current.end();itc++ ){
string word=*itc;
unordered_set<string> new_states = state_extend_function(word,dict,visited,end);
unordered_set<string>::iterator itv;
for ( itv=new_states.begin();itv ! = new_states.end();itv++ ){
string state=*itv;
if (state_is_target(state)) found = true;
next.insert(state);
father[state].push_back(word);
// visited.insert(state); // moved to the top
}
}
current.clear();
swap(current, next);
}
vector<vector<string> > result;
if (found) {
vector<string> path;
gen_path(father, path, start, end, result);
}
return result;
}
void main(){
string start="hit",end="cog";
string sArr[]={"hot","dot","dog","lot","log"};
int len=sizeof(sArr)/sizeof(sArr[0] );
unordered_set<string> dict( sArr
....
<スパン
ラムダ式(無名関数)という概念は、多くの高級言語で導入されている。
<スパン ....
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
ハートビート・エフェクトのためのHTML+CSS
-
HTML ホテル フォームによるフィルタリング
-
HTML+cssのボックスモデル例(円、半円など)「border-radius」使いやすい
-
HTMLテーブルのテーブル分割とマージ(colspan, rowspan)
-
ランダム・ネームドロッパーを実装するためのhtmlサンプルコード
-
Html階層型ボックスシャドウ効果サンプルコード
-
QQの一時的なダイアログボックスをポップアップし、友人を追加せずにオンラインで話す効果を達成する方法
-
sublime / vscodeショートカットHTMLコード生成の実装
-
HTMLページを縮小した後にスクロールバーを表示するサンプルコード
-
html のリストボックス、テキストフィールド、ファイルフィールドのコード例