Advertisement
farsid

Untitled

Mar 27th, 2013
58
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.49 KB | None | 0 0
  1. #define filer() freopen("D.txt","r",stdin)
  2. #define filew() freopen("out.txt","w",stdout)
  3. #include<iostream>
  4. #include<stdio.h>
  5. #include<string.h>
  6. #include<math.h>
  7. #include<algorithm>
  8. #include<queue>
  9. #include<stack>
  10. #include<string>
  11. #include<vector>
  12. #include <map>
  13. #define INF 1<<29
  14. #define PI pair<int,int>
  15.  
  16. #define SET(a, x) memset((a), (x), sizeof(a))
  17. #define pb push_back
  18. #define i64 long long
  19. #define EPS (1e-9)
  20. using namespace std;
  21. typedef vector<int> VI;
  22. typedef vector<PI> vii;
  23. //i64 INF=(i64)((i64)1<<(i64)59);
  24.  
  25. int N;
  26.  
  27. char s1[210];
  28. char s2[210];
  29.  
  30. int DP[210][210][4];
  31.  
  32. int func(int i,int j,int state)
  33. {
  34. if(DP[i][j][state]!=-1)return DP[i][j][state];
  35.  
  36. if(i==j)
  37. {
  38. if(state==0)
  39. {
  40. if(s1[i]==s2[i])return DP[i][j][state]=0;
  41. return DP[i][j][state]=1;
  42. }
  43. else if(state==1)
  44. {
  45. if(s2[i]=='A')return DP[i][j][state]=0;
  46. return DP[i][j][state]=1;
  47. }
  48. else
  49. {
  50. if(s2[i]=='B')return DP[i][j][state]=0;
  51. return DP[i][j][state]=1;
  52. }
  53. }
  54.  
  55.  
  56.  
  57. int ans=INF,a,b,c,x,y,k;
  58.  
  59. for(k=i;k<j;k++)
  60. {
  61. a=func(i,k,state);
  62. b=func(k+1,j,state);
  63. ans=min(ans,a+b);
  64. }
  65. if(state!=1){
  66. for(k=i;k<j;k++)
  67. {
  68. a=func(i,k,1);
  69. b=func(k+1,j,1);
  70. ans=min(ans,1+a+b);
  71. }
  72. }
  73.  
  74. if(state!=2){
  75. for(k=i;k<j;k++)
  76. {
  77. a=func(i,k,2);
  78. b=func(k+1,j,2);
  79. ans=min(ans,1+a+b);
  80. }
  81. }
  82. /*for(int k=i;k<j;k++)
  83. {
  84. a=func(i,k,state);
  85. b=1+func(i,k,1);
  86. c=1+func(i,k,2);
  87. x=min(a,b);
  88. x=min(x,c);
  89. a=func(k+1,j,state);
  90. b=1+func(k+1,j,1);
  91. c=1+func(k+1,j,2);
  92. y=min(a,b);
  93. y=min(y,c);
  94.  
  95. ans=min(ans,x+y);
  96. }*/
  97. return DP[i][j][state]=ans;
  98. }
  99.  
  100. int main()
  101. {
  102. filer();
  103. int T,cas=0;
  104. int i,j,k;
  105. scanf("%d",&T);
  106. SET(DP,-1);
  107. while(T--)
  108. {
  109.  
  110. scanf("%s",s1);
  111. scanf("%s",s2);
  112. int l=strlen(s1);
  113. int ans=func(0,l-1,0);
  114. //cout<<ans<<endl;
  115. printf("%d\n",ans);
  116. if(T)
  117. {
  118. for(i=0;i<l;i++)
  119. {
  120. for(j=0;j<l;j++)
  121. {
  122. for(k=0;k<3;k++)DP[i][j][k]=-1;
  123. }
  124. }
  125. }
  126. }
  127.  
  128. return 0;
  129. }
  130. /*
  131. Test Case:
  132.  
  133. */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement