1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 | #include<stdio.h> #include<string.h> int arr[105][105]; int res[105][105]; char a[105]; char b[105]; char c[105]; char result[222]; int k; void print_lcs(int i,int j) { if(i<0 || j<0) return; if(res[i][j]==1) {//printf("here1\n"); print_lcs(i-1,j-1); c[k++]=a[i]; } else if(res[i][j]==2) { print_lcs(i-1,j);//printf("here2\n"); } else if(res[i][j]==3) {print_lcs(i,j-1);//printf("here3\n"); } } int main() { int i,j,x,y,l1,l2,r,m,n; char ch; while(scanf("%s %s",a,b)>0) { //scanf("%s",b); //printf("%s %s\n",a,b); if(!strcmp(a,b)) {printf("%s\n",a); continue; } l1 = strlen(a); l2 = strlen(b); //k=0; for (i=0;i<l1;i++) for (j=0;j<l2;j++) { arr[i][j]=0; res[i][j]=0;} for(i = 0;i<l1;i++) { for(j = 0;j<l2;j++) { if(a[i] == b[j]) { arr[i][j] = arr[i-1][j-1] + 1; res[i][j]=1; //printf("%d\n",k); } else { x = arr[i-1][j]; y = arr[i][j-1]; if(x>=y) { arr[i][j] = arr[i-1][j]; res[i][j] = 2; //printf("%d\n",k); } else { arr[i][j] = arr[i][j-1]; res[i][j] = 3; // printf("%d\n",k); } } } } /*for(i=0;i<l1;i++) { for(j=0;j<l2;j++) { printf("%d ",res[i][j]); } printf("\n"); } */ //c[k]='\0'; k=0; print_lcs(l1-1,l2-1); if(!k) { printf("%s%s\n",a,b); continue; } c[k]='\0'; printf("%s %d\n",c,strlen(c)); i=0;r=0; m=0;n=0; /* while(a[m]!=c[i]) { result[r++]=a[m++]; i++; } while(b[n++]!=c[i]) { result[r++]=b[n++]; } result[r++]=c[i]; i++;*/ while(i<strlen(c)) { while(a[m]!=c[i]) { result[r++]=a[m++]; //i++; } while(b[n]!=c[i]) { result[r++]=b[n++]; } /*while(a[i]!=c[i]) { result[r++]=a[i]; } while(b[i]!=c[i]) { result[r++]=b[i]; }*/ result[r++]=c[i++]; m++; n++; printf("%d %d %d %d\n",i,r,m,n); } while(m<strlen(a)) result[r++]=a[m++]; while(n<strlen(b)) result[r++]=a[n++]; result[r]='\0'; printf("%s\n",result); } return 0; } |
I2luY2x1ZGU8c3RkaW8uaD4KI2luY2x1ZGU8c3RyaW5nLmg+CmludCBhcnJbMTA1XVsxMDVdOwppbnQgcmVzWzEwNV1bMTA1XTsKCmNoYXIgYVsxMDVdOwpjaGFyIGJbMTA1XTsKY2hhciBjWzEwNV07CmNoYXIgcmVzdWx0WzIyMl07CmludCBrOwp2b2lkIHByaW50X2xjcyhpbnQgaSxpbnQgaikKewogICAgIGlmKGk8MCB8fCBqPDApCiAgICAgIHJldHVybjsKICAgICBpZihyZXNbaV1bal09PTEpCiAgICAgIHsvL3ByaW50ZigiaGVyZTFcbiIpOwogICAgICAgcHJpbnRfbGNzKGktMSxqLTEpOwogICAgICBjW2srK109YVtpXTsKICAgICAgIH0KICAgICAgZWxzZSBpZihyZXNbaV1bal09PTIpCiAgICAgIHsKICAgICAgIHByaW50X2xjcyhpLTEsaik7Ly9wcmludGYoImhlcmUyXG4iKTsKICAgICAgIH0KICAgICAgZWxzZSBpZihyZXNbaV1bal09PTMpCiAgICAgICB7cHJpbnRfbGNzKGksai0xKTsvL3ByaW50ZigiaGVyZTNcbiIpOwogICAgICAgfQp9CmludCBtYWluKCkKewogIGludCBpLGoseCx5LGwxLGwyLHIsbSxuOwogIGNoYXIgY2g7CiB3aGlsZShzY2FuZigiJXMgJXMiLGEsYik+MCkKICB7CgkvL3NjYW5mKCIlcyIsYik7CgkvL3ByaW50ZigiJXMgJXNcbiIsYSxiKTsKCWlmKCFzdHJjbXAoYSxiKSkKCXtwcmludGYoIiVzXG4iLGEpOwoJIGNvbnRpbnVlOwoJfQoJbDEgPSBzdHJsZW4oYSk7CglsMiA9IHN0cmxlbihiKTsKCS8vaz0wOwoJZm9yIChpPTA7aTxsMTtpKyspCiAgICAgICAgIGZvciAoaj0wO2o8bDI7aisrKQogICAgICAgICAgICB7IGFycltpXVtqXT0wOyAKICAgICAgICAgICAgcmVzW2ldW2pdPTA7fQoKCWZvcihpID0gMDtpPGwxO2krKykKCXsgICAgIAoJCWZvcihqID0gMDtqPGwyO2orKykKCQl7CgkJCWlmKGFbaV0gPT0gYltqXSkKCQkJewlhcnJbaV1bal0gPSBhcnJbaS0xXVtqLTFdICsgMTsKCQkJCXJlc1tpXVtqXT0xOwoJCQkJLy9wcmludGYoIiVkXG4iLGspOwoJCQl9CQkKCQkJZWxzZQogICAJCQl7CQoJCQkJeCA9IGFycltpLTFdW2pdOwoJCQkJeSA9IGFycltpXVtqLTFdOwoJCQkJaWYoeD49eSkKCQkJCXsKCQkJCQlhcnJbaV1bal0gPSBhcnJbaS0xXVtqXTsKCQkJCQlyZXNbaV1bal0gPSAyOwoJCQkJCS8vcHJpbnRmKCIlZFxuIixrKTsKCQkJCX0KCQkJCWVsc2UKCQkJCXsKCQkJCQlhcnJbaV1bal0gPSBhcnJbaV1bai0xXTsKCQkJCQlyZXNbaV1bal0gPSAzOwoJCQkJLy8JcHJpbnRmKCIlZFxuIixrKTsKCQkJCX0KCQkJfQoJCX0KCX0KCS8qZm9yKGk9MDtpPGwxO2krKykKCXsKCQlmb3Ioaj0wO2o8bDI7aisrKQoJCXsJcHJpbnRmKCIlZCAiLHJlc1tpXVtqXSk7CgkJfQoJCXByaW50ZigiXG4iKTsKCX0gCgkJKi8JLy9jW2tdPSdcMCc7CgkJaz0wOwoJCQlwcmludF9sY3MobDEtMSxsMi0xKTsKCQkJaWYoIWspCgkJCXsKCQkJCXByaW50ZigiJXMlc1xuIixhLGIpOwoJCQkJY29udGludWU7CgkJCX0KCQkJY1trXT0nXDAnOwoJCQlwcmludGYoIiVzICVkXG4iLGMsc3RybGVuKGMpKTsKCQkJaT0wO3I9MDsKCQkJbT0wO249MDsKCQkvKgl3aGlsZShhW21dIT1jW2ldKQoJCQl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0W3IrK109YVttKytdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkrKzsKICAgICAgICAgICAgfQoJCSAgICB3aGlsZShiW24rK10hPWNbaV0pCgkJCXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRbcisrXT1iW24rK107CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmVzdWx0W3IrK109Y1tpXTsKICAgICAgICAgICAgaSsrOyovCiAgICAgICAgICAgIHdoaWxlKGk8c3RybGVuKGMpKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgCXdoaWxlKGFbbV0hPWNbaV0pCgkJCSAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0W3IrK109YVttKytdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vaSsrOwogICAgICAgICAgICAgICAgfQoJCSAgICAgICAgd2hpbGUoYltuXSE9Y1tpXSkKCQkJICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRbcisrXT1iW24rK107CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgLyp3aGlsZShhW2ldIT1jW2ldKQoJCQkgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRbcisrXT1hW2ldOwogICAgICAgICAgICAgIH0KCQkgICAgICB3aGlsZShiW2ldIT1jW2ldKQoJCQkgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRbcisrXT1iW2ldOwogICAgICAgICAgICAgIH0qLwogICAgICAgICAgICAgIHJlc3VsdFtyKytdPWNbaSsrXTsKICAgICAgICAgICAgICBtKys7CiAgICAgICAgICAgICAgbisrOwogICAgICAgICAgICAgIHByaW50ZigiJWQgJWQgJWQgJWRcbiIsaSxyLG0sbik7CiAgICAgICAgIH0KICAgICAgICAgd2hpbGUobTxzdHJsZW4oYSkpCiAgICAgICAgICByZXN1bHRbcisrXT1hW20rK107ICAgICAgICAgICAgCgkJIHdoaWxlKG48c3RybGVuKGIpKQogICAgICAgICAgcmVzdWx0W3IrK109YVtuKytdOyAKICAgICAgICAgIHJlc3VsdFtyXT0nXDAnOwogICAgIHByaW50ZigiJXNcbiIscmVzdWx0KTsgICAgIAkJCgl9CglyZXR1cm4gMDsKfQoJCg==
-
upload with new input
-
result: Success time: 0.01s memory: 1808 kB returned value: 0
apple peach
applepeach
-
result: Success time: 0.01s memory: 1808 kB returned value: 0
apple peach ananas banana pear peach
applepeach anana 5 1 2 1 2 2 3 2 3 3 4 3 4 4 5 4 5 5 6 5 6 bananas pearpeach



