fork download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. int a,b;
  4. vector <string> word;
  5. vector <string> palavra;
  6. string k,k2;
  7. int memo[100][100];
  8.  
  9. int dp(string wrd,string plv,int w,int p){
  10. if(w==0) return p;
  11.  
  12. else if(p==0) return w;
  13.  
  14. else{
  15. if (memo[w][p] == -1){
  16. memo[w][p] = 0;
  17. if (wrd[w] == plv[p]){
  18. memo[w][p] = dp(wrd,plv,w-1,p-1);
  19. }
  20. else{
  21. cout << wrd << " " << plv << " " << w << " " << " " << p << ' ' << memo[w][p] << endl;
  22. memo[w][p] = 1 + min(dp(wrd,plv,w-1,p-1),min(dp(wrd,plv,w-1,p),dp(wrd,plv,w,p-1)));
  23. }
  24. }
  25. }
  26. return memo[w][p];
  27. }
  28.  
  29. int main() {
  30. memset(memo,-1,sizeof memo);
  31. cin >> a >> b;
  32. for(int i = 0;i < a; i++){
  33. cin >> k;
  34. word.push_back(k);
  35. }
  36. for(int i = 0;i < b; i++){
  37. cin >> k2;
  38. palavra.push_back(k2);
  39. }
  40. for(int i = 0; i < b; i++){
  41.  
  42. for(int j = 0; j < a; j++){
  43. int any = 0;
  44. any = dp(word[j],palavra[i],word[j].size()-1,palavra[i].size()-1);
  45. if (any <= 2) cout << word[j] << " " << any << " " ;
  46. }
  47. cout << endl;
  48. }
  49.  
  50. return 0;
  51. }
Success #stdin #stdout 0s 15280KB
stdin
3 3
pato
pateta
caneca
pat
ccanecos
pata
stdout
pato pat 3  2 0
pato pat 3  1 0
pato pat 2  1 0
pato 1 pateta pat 5  2 0
pateta pat 4  1 0

pato ccanecos 3  7 0
pato ccanecos 2  5 0
pato ccanecos 2  4 0
pato ccanecos 2  3 0
pato ccanecos 1  3 0
pato ccanecos 1  4 0
pato ccanecos 1  5 0
pato ccanecos 2  7 0
pato ccanecos 2  6 0
pato ccanecos 1  6 0
pato ccanecos 1  7 0
pateta ccanecos 5  7 0
pateta ccanecos 5  6 0
pateta ccanecos 5  5 0
pateta ccanecos 5  4 0
pateta ccanecos 5  3 0
pateta ccanecos 4  3 0
pateta ccanecos 3  3 0
pateta ccanecos 4  4 0
pateta ccanecos 4  5 0
pateta ccanecos 3  5 0
pateta ccanecos 4  6 0
pateta ccanecos 4  7 0

pato 1