我想實現將給定字符串分解爲其組成字典單詞問題的解決方案,但是我的代碼給出了錯誤的輸出,如「icecreamicecream」在輸出中得到一些單詞兩次。請讓我知道我出錯的地方。以下是我的代碼:給出錯誤的輸出:如何將字符串分解爲字典單詞
#include <set>
#include <algorithm>
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include<string.h>
#define MAX 12
using namespace std;
string arr[]={"i", "like", "sam", "sung", "samsung", "mobile", "ice","cream", "icecream", "man", "go", "mango"};
set<string> dictionary (arr,arr+MAX);
int cnt=0;
void print_words(string str,int i,int j)//i and j denote starting and ending indices respectively of the string to be matched
{
if(i>j||j>=str.length()||i>=str.length())
{
return;
}
string temp (str, i, j-i+1);
if(dictionary.find(temp)==dictionary.end())
print_words(str,i,j+1);
else
{
cout<<temp<<endl;
cnt++;
print_words(str,j+1,j+1);
print_words(str,i,j+1);
}
}
int main()
{
string str;
cin>>str;
print_words(str,0,0);
cout<<cnt<<endl;
return 0;
}
對於字符串icecreamicecream:我想這是輸出的順序:我發現以線性方式的所有單詞 我冰淇淋我冰淇淋冰淇淋冰淇淋 1,然後回溯得到剩餘的話。
你的問題有幾種解決方案,但你似乎並沒有將它們分開(例如解決方案:'冰淇淋cream','冰淇淋icecream','我膏icecream' ... )。 – Synxis
根據我的輸出顯示應該是: 我冰淇淋我冰淇淋冰淇淋冰淇淋 – amiageek
你應該發佈你期望/想要的問題(比你的評論更多的細節)。 – Synxis