fork(4) download
  1. #include<iostream>
  2. #include<string>
  3. using namespace std;
  4.  
  5. static int step=0;
  6. int mini(int temp1,int temp2,int temp3)
  7. {
  8. int a=(temp1<temp2)?temp1:temp2;
  9. return((a<temp3)?a:temp3);
  10. }
  11. int getmin(string str1,int starter,int ender,int table[][20])
  12. {
  13.  
  14. int temp1,temp2,temp3;
  15. if(starter>=ender)
  16. return 0;
  17. if(table[starter][ender]==0)
  18. {
  19. step++;
  20. if(str1[starter]==str1[ender])
  21. {
  22. temp1=getmin(str1,starter,ender-1,table)+1;
  23. temp2=getmin(str1,starter+1,ender,table)+1;
  24. temp3=getmin(str1,starter+1,ender-1,table);
  25. table[starter][ender]=mini(temp1,temp2,temp3);
  26. return(mini(temp1,temp2,temp3));
  27. }
  28.  
  29. else
  30. {
  31. temp1=getmin(str1,starter,ender-1,table)+1;
  32. temp2=getmin(str1,starter+1,ender,table)+1;
  33. temp3=getmin(str1,starter+1,ender-1,table)+2;
  34. table[starter][ender]=mini(temp1,temp2,temp3);
  35. return(mini(temp1,temp2,temp3));
  36. }
  37. }
  38. else
  39. return table[starter][ender];
  40. }
  41.  
  42.  
  43.  
  44.  
  45. int main()
  46. {
  47. int i,j,k;
  48. string str1;
  49. char str2[20];
  50. int table[20][20];
  51. cin>>str1;
  52. int n=str1.length();
  53. for(i=0;i<20;i++)
  54. for(j=0;j<20;j++)
  55. table[i][j]=0;
  56. i=getmin(str1,0,n-1,table);
  57. cout<<i;
  58. // cout<<step;
  59. }
  60.  
Success #stdin #stdout 0s 3436KB
stdin
hellopolo
stdout
4