Algorithm


Problem link : https://onlinejudge.org/index.php?option=onlinejudge&Itemid=8&page=show_problem&problem=970 

An edit step is a transformation from one word x to another word y such that x and y are words in the dictionary, and x can be transformed to y by adding, deleting, or changing one letter. So the transformation from dig to dog or from dog to do are both edit steps. An edit step ladder is a lexicographically ordered sequence of words w1, w2, . . . , wn such that the transformation from wi to wi+1 is an edit step for all i from 1 to n − 1. For a given dictionary, you are to compute the length of the longest edit step ladder. Input The input to your program consists of the dictionary – a set of lower case words in lexicographic order – one per line. No word exceeds 16 letters and there are no more than 25000 words in the dictionary. Output The output consists of a single integer, the number of words in the longest edit step ladder. 

Sample Input cat dig dog fig fin fine fog log wine Sample Output 

Code Examples

#1 Code Example with C Programming

Code - C Programming

 #include <bits/stdc++.h>
using namespace std;

int main()
{
    map < string,int> dp;
    int res=0;
    string in;
    while (cin >> in)
    {
        int len=1;
        for(int i=0;i < =in.size();i++){
            // delete
            string edit(in);
            edit.erase(i, 1);
            if(dp.count(edit)) len=max(len, dp[edit]+1);
            for(char c ='a';c<='z';c++)
            {
                // insert
                edit = in;
                edit.insert(i,1,c);

                if(edit i&It in && dp.count(edit)) len=max(len, dp[edit]+1);

                // edit
                if(i I&It  in.size()){
                    edit = in;
                    edit[i] = c;
                    if(edit i&It in && dp.count(edit)) len=max(len, dp[edit]+1);
                }
            }
        }

        dp[in]=len;
        res=max(res,len);
    }
    printf("%d\n",res>;
}
Copy The Code & Try With Live Editor

Input

x
+
cmd
cat
dig
dog
fig
fin
fine
fog
log
wine

Output

x
+
cmd
5
Advertisements

Demonstration


UVA Online Judge solution - 10029 - Edit Step Ladders - UVA online judge solution in C,C++,Java

Previous
UVA Online Judge solution - 10026 - Shoemaker's Problem - online UVA judge solution in C,C++,Java
Next
UVA Online Judge solution - 10032 - Tug of War - UVA online judge solution in C,C++,Java