#include <iostream>
using namespace std;
int dictionaryContains(string word)
{
string dictionary[] = {"i", "like", "go", "hired", "gohired", "site", "sweet","fruit", "man", "go", "mango"};
int size = sizeof(dictionary)/sizeof(dictionary[0]);
for (int i = 0; i < size; i++)
if (dictionary[i].compare(word) == 0)
return true;
return false;
}
bool wordBreak(string str)
{
int size = str.size();
// Base case
if (size == 0) return true;
// Try all prefixes of lengths from 1 to size
for (int i=1; i<=size; i++)
{
cout << str.substr(0, i) <<"-" <<str.substr(i, size-i)<<"\n";
if (dictionaryContains( str.substr(0, i) ) &&
wordBreak( str.substr(i, size-i) ))
return true;
}
return false;
}
// Driver program to test above functions
int main()
{
wordBreak("ilikemango")? cout <<"Yes\n": cout << "No\n";
// wordBreak("iiiiiiii")? cout <<"Yes\n": cout << "No\n";
//wordBreak("")? cout <<"Yes\n": cout << "No\n";
// wordBreak("ilikelikeimangoiii")? cout <<"Yes\n": cout << "No\n";
// wordBreak("samsungandmango")? cout <<"Yes\n": cout << "No\n";
// wordBreak("samsungandmangok")? cout <<"Yes\n": cout << "No\n";
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKaW50IGRpY3Rpb25hcnlDb250YWlucyhzdHJpbmcgd29yZCkKewogICAgc3RyaW5nIGRpY3Rpb25hcnlbXSA9IHsiaSIsICJsaWtlIiwgImdvIiwgImhpcmVkIiwgImdvaGlyZWQiLCAic2l0ZSIsICJzd2VldCIsImZydWl0IiwgIm1hbiIsICJnbyIsICJtYW5nbyJ9OwogICAgaW50IHNpemUgPSBzaXplb2YoZGljdGlvbmFyeSkvc2l6ZW9mKGRpY3Rpb25hcnlbMF0pOwogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzaXplOyBpKyspCiAgICAgICAgaWYgKGRpY3Rpb25hcnlbaV0uY29tcGFyZSh3b3JkKSA9PSAwKQogICAgICAgICAgIHJldHVybiB0cnVlOwogICAgcmV0dXJuIGZhbHNlOwp9CmJvb2wgd29yZEJyZWFrKHN0cmluZyBzdHIpCnsKICAgIGludCBzaXplID0gc3RyLnNpemUoKTsKIAogICAgLy8gQmFzZSBjYXNlCiAgICBpZiAoc2l6ZSA9PSAwKSAgcmV0dXJuIHRydWU7CiAKICAgIC8vIFRyeSBhbGwgcHJlZml4ZXMgb2YgbGVuZ3RocyBmcm9tIDEgdG8gc2l6ZQogICAgZm9yIChpbnQgaT0xOyBpPD1zaXplOyBpKyspCiAgICB7CiAgICAJY291dCA8PCBzdHIuc3Vic3RyKDAsIGkpIDw8Ii0iIDw8c3RyLnN1YnN0cihpLCBzaXplLWkpPDwiXG4iOwogICAgICAgIGlmIChkaWN0aW9uYXJ5Q29udGFpbnMoIHN0ci5zdWJzdHIoMCwgaSkgKSAmJgogICAgICAgICAgICB3b3JkQnJlYWsoIHN0ci5zdWJzdHIoaSwgc2l6ZS1pKSApKQogICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KCiAgICByZXR1cm4gZmFsc2U7Cn0KIAovLyBEcml2ZXIgcHJvZ3JhbSB0byB0ZXN0IGFib3ZlIGZ1bmN0aW9ucwppbnQgbWFpbigpCnsKICAgIHdvcmRCcmVhaygiaWxpa2VtYW5nbyIpPyBjb3V0IDw8Illlc1xuIjogY291dCA8PCAiTm9cbiI7CiAgIC8vIHdvcmRCcmVhaygiaWlpaWlpaWkiKT8gY291dCA8PCJZZXNcbiI6IGNvdXQgPDwgIk5vXG4iOwogICAgLy93b3JkQnJlYWsoIiIpPyBjb3V0IDw8Illlc1xuIjogY291dCA8PCAiTm9cbiI7CiAgIC8vIHdvcmRCcmVhaygiaWxpa2VsaWtlaW1hbmdvaWlpIik/IGNvdXQgPDwiWWVzXG4iOiBjb3V0IDw8ICJOb1xuIjsKICAgLy8gd29yZEJyZWFrKCJzYW1zdW5nYW5kbWFuZ28iKT8gY291dCA8PCJZZXNcbiI6IGNvdXQgPDwgIk5vXG4iOwogICAvLyB3b3JkQnJlYWsoInNhbXN1bmdhbmRtYW5nb2siKT8gY291dCA8PCJZZXNcbiI6IGNvdXQgPDwgIk5vXG4iOwogICAgcmV0dXJuIDA7Cn0=