//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> <Diff analysis algoritms> <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< /// Método que analiza os 2 ficheiros actualziando as estruturas auxiliares necessárias para fazer o output da diferença entre eles void Diff::analyzeFiles() { findCorrespondentLines(); for (size_t lineIndex = 0; lineIndex < originalFileLinesStatus.size(); ++lineIndex) { LCS lcs; string LCSFound; if (originalFileLinesStatus[lineIndex].getLinesStatus() == LINE_MODIFIED) { lcs = LCS(originalFileData[lineIndex], modifiedFileData[lineIndex]); LCSFound = lcs.findLCS(); } if (originalFileLinesStatus[lineIndex].getLinesStatus() == LINE_MOVED_AND_MODIFIED) { lcs = LCS(originalFileData[lineIndex], modifiedFileData[originalFileMovedLinesIndexsInModifiedFile[lineIndex]]); LCSFound = lcs.findLCS(); } if (LCSFound.empty()) continue; //update aos infos dos chars da linha do ficheiro original size_t currentPosOnLCS = 0; vector <bool> lineCharsChangedOnOriginalFile(originalFileData[lineIndex].size(), true); for (size_t charIndex = 0; charIndex < originalFileData[lineIndex].size(); ++charIndex) { if (currentPosOnLCS < LCSFound.size()) { if (LCSFound[currentPosOnLCS] == originalFileData[lineIndex][charIndex]) { lineCharsChangedOnOriginalFile[charIndex] = false; ++currentPosOnLCS; } } else { break; } } originalFileLinesStatus[lineIndex].setLineCharsChangedOnOriginalFile(lineCharsChangedOnOriginalFile); //update aos infos dos chars da linha do ficheiro modificado currentPosOnLCS = 0; int indexOfOriginalLineOnModifiedFile = originalFileMovedLinesIndexsInModifiedFile[lineIndex]; vector <bool> lineCharsChangedOnModifiedFile(modifiedFileData[indexOfOriginalLineOnModifiedFile].size(), true); for (size_t charIndex = 0; charIndex < modifiedFileData[indexOfOriginalLineOnModifiedFile].size(); ++charIndex) { if (currentPosOnLCS < LCSFound.size()) { if (LCSFound[currentPosOnLCS] == modifiedFileData[indexOfOriginalLineOnModifiedFile][charIndex]) { lineCharsChangedOnModifiedFile[charIndex] = false; ++currentPosOnLCS; } } else { break; } } originalFileLinesStatus[lineIndex].setLineCharsChangedOnModifiedFile(lineCharsChangedOnModifiedFile); } }
int LCS( char *X, char *Y, int i, int j) { if(i < 0 || j < 0) { return 0; } else if(X[i] == Y[j]) { return 1 + LCS(X, Y, i - 1, j - 1); } else return MAX(LCS(X, Y, i-1, j), LCS(X, Y, i, j-1)); }
int LCS(char *stra,char *strb,int m,int n){ if(m==0 || n==0){ return 0; } if(stra[m-1] == strb[n-1]){ return 1+LCS(stra,strb,m-1,n-1); } return MAX(LCS(stra,strb,m-1,n),LCS(stra,strb,m,n-1)); }
int LCS(char *s1, char *s2, int i, int j) { int c; if(i == 0 || j == 0) return 0; if(s1[i] == s2[j]) { c = LCS(s1, s2, i-1, j-1) + 1; } else { int c1 = LCS(s1, s2, i-1, j); int c2 = LCS(s1, s2, i, j-1); c = max(c1, c2); } return c; }
int main() { char* a = "AGGACAT"; char* b = "ATTACGAT"; printf("first test returns %i, should be 5 \n", LCS(a,b)); a = "AAGCTTAAGAAGCCTTCAACAGG"; b = "GGGTTTGGCATGTCCTTGACCAT"; printf("second test returns %i, should be 14 \n", LCS(a,b)); a = "ATCTGTGGTGGAAAGGCTAACATACC"; b = "CAAGAAATGTTAACTCAGAGTTGT"; printf("third test returns %i, should be 12 \n", LCS(a,b)); }
int main(int argc, const char *argv[]){ int i=strlen(argv[1]),j=strlen(argv[2]); int lcs_length, k, l; temp = (int**)malloc(sizeof(int*)*(i+1)); for(k=0;k<=i;k++){ *(temp+k) = (int*)malloc(sizeof(int)*(j+1)); for(l=0;l<=k;l++){ temp[k][l] = 0xffffffff; } } lcs_length = LCS(argv[1],argv[2],i,j); printf("A: %s\nB: %s\n\n",argv[1],argv[2]); printf("LCS Lenght is %d\n\n",lcs_length); for(l=0;l<=j;l++){ for(k=0;k<=i;k++){ printf("%d ",temp[k][l]); } printf("\n"); } for(k=0;k<i;k++){ free(*(temp+k)); } free(temp); }
void main(int argc,char *argv[]){ int *first_length_pointer,*second_length_pointer; //pointers to the lengths of arrays int **LCSarray; //stores lengths of the subsequences int i; char *firststring,*secondstring; //input strings int firststring_length=0; int secondstring_length=0; first_length_pointer=&firststring_length; second_length_pointer=&secondstring_length; if(argc!=2){ printf("\nInvalid Arguments"); exit(0); } calculate_lengths(argv[1],&firststring_length,&secondstring_length); firststring_length=*first_length_pointer; secondstring_length=*second_length_pointer; firststring=createarray(firststring_length); //allocates memory for first input string secondstring=createarray(secondstring_length);//allocates memory for second input string populatearray(firststring,secondstring,argv[1]); LCSarray=createLCSarray(firststring_length,secondstring_length); //creates LCSmatrix LCS(firststring_length,secondstring_length,LCSarray,firststring,secondstring); free(LCSarray); }
int main() { char* XArray = " ABCBDAB"; char* YArray = " BDCABA"; int XLength = strlen(XArray); int YLength = strlen(YArray); int **MaxLenghtMetrix = (int **)malloc(XLength*sizeof(int *)); int i; for(i = 0; i < XLength; ++i) { MaxLenghtMetrix[i] = (int *)malloc(YLength*sizeof(int)); } int **SolvedNumberMetrix = (int **)malloc(XLength*sizeof(int *)); for(i = 0; i < XLength; ++i) { SolvedNumberMetrix[i] = (int *)malloc(YLength*sizeof(int)); } LCSLength(XLength-1,YLength-1, XArray, YArray, MaxLenghtMetrix, SolvedNumberMetrix); printf("================\n"); printf("MaxLenghtMetrix:\n"); print_array(MaxLenghtMetrix,XLength,YLength); printf("================\n"); printf("SolvedNumberMetrix:\n"); print_array(SolvedNumberMetrix,XLength,YLength); LCS(XLength-1,YLength-1,XArray,SolvedNumberMetrix); return 0; }
int main (int argc, char const *argv[]) { int i, j; char X[] = "ABCBDAB"; char Y[] = "BDCABA"; printf("%d\n", LCS(X, Y, strlen(X) - 1, strlen(Y) - 1)); // generating the actual subsequence using DP array. i = 0 ; for(j = 0; j < strlen(Y);) { if(X[i] == Y[j]) { printf("%c", X[i]); i++; j++; } else{ if(DP[i+1][j] > DP[i][j+1]) { i++; } else j++; } } printf("\n"); return 0; }
int main(int argc, char** argv) { char X[] = "ABCDGH"; char Y[] = "AEDFHR"; int i = 0; int m = strlen(X); int n = strlen(Y); L = (int**) malloc(m * sizeof(int*)); for (i = 0; i < m; i++) { L[i] = (int*) malloc(n * sizeof(int)); } printf("Length of LCS is %d\n", LCS( X, Y, m, n ) ); for (i = 0; i < m; i++) { free(L[i]); } free(L); }
int main (int argc, char const *argv[]) { char X[] = "ABCBDAB"; char Y[] = "BDCABA"; printf("%d", LCS(X, Y, strlen(X) - 1, strlen(Y) - 1)); return 0; }
int main (int argc, char const *argv[]) { char X[] = "WRWWLWWLWWLWLWRRWRWWWRWWRWLW"; char Y[] = "WWRRWLWLWWLWWLWWRWWRWWLW"; printf("%d", LCS(X, strrev(Y), strlen(X) - 1, strlen(Y) - 1)); return 0; }
int main(void) { char* ptr1 = "abcde"; char* ptr2 = "acde"; LCS(ptr1, ptr2); printf("\n"); return 0; }
int main(void) { char a[7] = {'a', 'b', 'c', 'b', 'd', 'a', 'b'}; char b[7] = {'b', 'd', 'c', 'a', 'b', 'a'}; int res[7][7]; LCS(a, b, 7, 7, res); printf("%d\n", res[6][6]); return 0; }
int main(int argc, char** argv) { int num; scanf("%d",&num); while(num--){ scanf("%s",s1); scanf("%s",s2); printf("%d\n",LCS()); } return 0; }
int main() { ifstream cin("input.txt"); cin>>s1>>s2; l1=strlen(s1); l2=strlen(s2); int i1,i2,i,l = LCS(s1,l1,s2,l2,i1,i2); cout<<l<<" "<<i1<<" "<<i2<<endl; for(i=0;i<l;i++) cout<<s1[i1+i]; cout<<endl; for(i=0;i<l;i++) cout<<s2[i2+i]; cout<<endl; return 0; }
int main(void){ char *s1,*s2; s1 = (char*)calloc(sizeof(char), MAX); s2 = (char*)calloc(sizeof(char), MAX); scanf("%s%s",s1,s2); printf("%d",LCS(s1,s2)); free(s1); free(s2); return 0; }
int main() { char str1[] = "BDCABA"; char str2[] = "ABCBDAB"; LCS(str1, strlen(str1), str2, strlen(str2)); getchar(); return 0; }
void LCS(int i,int j,char *XArray,int **SolvedNumberMetrix) { if(i == 0|| j == 0) { return ; } if(SolvedNumberMetrix[i][j] == 1) { LCS(i-1,j-1,XArray,SolvedNumberMetrix); printf("%c",XArray[i]); } else if(SolvedNumberMetrix[i][j] == 2) { LCS(i-1,j,XArray,SolvedNumberMetrix); } else { LCS(i,j-1,XArray,SolvedNumberMetrix); } }
static float similarity_detect(hashtable *htab, char **str1, int n, char **str2, int m, int sim_algo) { uint32_t lcs_len = 0; hash_for_each_do(htab, hash_callback); if (sim_algo == LCS_YES) { lcs_len = LCS(str1, n, str2, m, htab); return lcs_len * 2.0 / sim_union; } else { /* LCS_NOT */ return sim_intersect * 2.0 / sim_union; } }
int main() { char A[1000], B[1000]; while (scanf("%s%s", A, B) > 0) { int n = strlen(A); int m = strlen(B); printf("%d\n", LCS(A, B, n, m)); } return 0; }
void main() { freopen("in.txt", "r", stdin); while(gets(s1)) { gets(s2); init(); LCS(); dfs(m, n); putchar('\n'); } }
main() { char a[]="AGGTAB"; char b[]="GXTXAYB"; int m = strlen(a); int n = strlen(b); printf("%d",m); printf("%d",n); printf("\n\nLongest common string is: %d",LCS(a,b,m,n)); }
int main(){ int i, j; while(gets(str1) && gets(str2)){ len1=strlen(str1); len2=strlen(str2); for(i=0; i<len1; i++) for(j=0; j<len2; j++) memo[i][j]=-1; int res=LCS(0,0); printf("%d\n",res); } return 0; }
int LCS(const char* x, const char* y, int i, int j){ int a, b; if(temp[i][j]<0){ if(i==0 || j==0){ temp[i][j] = 0; } else if(x[i-1]==y[j-1]){ temp[i][j] = LCS(x,y,i-1,j-1)+1; } else{ a=LCS(x,y,i-1,j); b=LCS(x,y,i,j-1); if(a>=b){ temp[i][j] = a; } else{ temp[i][j] = b; } } } return temp[i][j]; }
std::vector < std::vector<size_t>> slowSuffPrefLCS(const std::string& str1, const std::string& str2) { std::vector<std::vector<size_t>> res; res.resize(str1.size()); for (size_t i = 0; i < res.size(); ++i) { res[i].resize(str2.size()); for (size_t j = 0; j < res[i].size(); ++j) { res[i][j] = LCS(str1.substr(i), str2.substr(0, j + 1)); } } return res; }
int main() { int d; char a[2010],b[2010]; int i,j,k,temp,temp1,coun,ma; while(scanf("%s",&a)!=EOF&&scanf("%s",&b)!=EOF) { i=strlen(a); j=strlen(b); coun=LCS(a,b,i,j); printf("%d\n",coun); } }
int minDistance1(string word1, string word2) { int m = word1.size(); int n = word2.size(); if (word2.empty()) return m; if (word1.empty()) return n; int lcs = LCS(word1, m, word2, n); if (m <= n) { return n - lcs; } else { return m - lcs; } }
int main(int argc, const char* argv[]) { Type A, B; int i = 5000; printf("Input string A:\n"); A = (Type)malloc(sizeof(char) * i); scanf("%s", A); printf("Input string B:\n"); B = (Type)malloc(sizeof(char) * i); scanf("%s", B); LCS(A, strlen(A), B, strlen(B)); return 0; }
int main() { char *query = (char*)malloc(sizeof(char)*MAXNUM); char *text = (char*)malloc(sizeof(char)*MAXNUM); printf("请输入query:"); gets(query); printf("请输入text:"); gets(text); //char query[] = "ABCBDAB"; //char text[] = "BDCABA"; int query_len = 0, text_len = 0, i, j; while(query[query_len] != '\0'){query_len++;}; while(text[text_len] != '\0'){text_len++;}; LCS(query, query_len, text, text_len); printf("LCS长度为%d\r\n",LCSPro[query_len][text_len]); printf("LCS为"); PrintPath(query, query_len, text_len); free(query); free(text); }