Advertisement
Guest User

Untitled

a guest
Mar 20th, 2018
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.42 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #define max 99
  5. int way[max][max];
  6. int n,m;
  7. int PrintLCD(char *subseq1, char *subseq2, int i, int j){
  8. //printf("%d %d \n",i,j);
  9. //printf("%d \n",way[i][j]);
  10. //if(i==0 || j==0)return 0;
  11. if(way[i][j] == 1){
  12. PrintLCD(subseq1,subseq2,i-1,j-1);
  13. printf("%c",subseq1[i]);
  14. }
  15. if(way[i][j] == 2){
  16. PrintLCD(subseq1,subseq2,i-1,j);
  17. }
  18. if(way[i][j] == 3){
  19. PrintLCD(subseq1,subseq2,i,j-1);
  20. }
  21. if(way[i][j] == 4){
  22. //printf("\n %d",way[i][j]);
  23. way[i][j]=2;
  24. PrintLCD(subseq1,subseq2,n-1,m-1);
  25. printf("\n");
  26. PrintLCD(subseq1,subseq2,i,j-1);
  27.  
  28.  
  29. }
  30.  
  31. return 0;
  32.  
  33.  
  34. }
  35.  
  36. int main(){
  37.  
  38. /*
  39. a b d c
  40. 0 0 0 0
  41. a0 1 1 1 1
  42. b0 1 2 2 2
  43. c0 1 2 2 3
  44. d0 1 2 3 3
  45.  
  46.  
  47.  
  48.  
  49. 1 3 3 3
  50. 2 1 3 3
  51. 2 2 4 1
  52. 2 2 1 4
  53.  
  54. */
  55. //1-skos 2-gora 3-lewo 4-gora/lewo
  56. //1-\ 2-up 3-left 4-both
  57.  
  58. int i,j;
  59.  
  60. char A[15],B[15];
  61. char subseq1[16]={'~'};
  62. char subseq2[16]={'~'};
  63.  
  64. printf("Podaj pierwszy ciag: ");
  65. scanf("%s",A);
  66. printf("\nPodaj drugi ciag: ");
  67. scanf("%s",B);
  68. printf("\n");
  69. strcat(subseq1,A);
  70. strcat(subseq2,B);
  71.  
  72. m=strlen(subseq1);
  73. n=strlen(subseq2);
  74. int C[n][m];
  75. for(i=0;i<m;i++) C[i][0]=0;
  76. for(j=1;j<n;j++) C[0][j]=0;
  77. for(i=1;i<m;i++){
  78. for(j=1;j<n;j++){
  79. if(subseq1[i] == subseq2[j]){
  80. C[i][j] = C[i-1][j-1]+1;
  81. way[i][j] = 1;
  82.  
  83. }
  84. else if(C[i-1][j]>=C[i][j-1]){
  85. C[i][j] = C[i-1][j];
  86. if(C[i-1][j]==C[i][j-1]) {
  87. way[i][j] = 4;
  88. }else{
  89. way[i][j] = 2;
  90. }
  91. }
  92. else{
  93. C[i][j] = C[i][j-1];
  94. way[i][j] = 3;
  95. }
  96. }
  97. }
  98. /*************
  99. rekurencja(i.j)
  100.  
  101. jezeli w way ij:
  102.  
  103. 4 rekurencja i-1j
  104. rekurencja ij-1
  105. 3 rekurencja i-1j
  106. 2 rekurencja ij-1
  107. 1 printf("%c",subseq1[i]);
  108. ***********
  109.  
  110.  
  111. */
  112. printf("Najdluzszy podciag to: ");
  113. PrintLCD(subseq1,subseq2,n-1,m-1);
  114. printf("\n");
  115.  
  116. return 0;
  117. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement