Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
LCS动态规划做的,总是TLE,各种精简,最后1985ms险过,继续精简~//http://poj.org/problem?id=1035 #include <stdio.h> #include <string.h> char dic[10010][16] = { 0 }; char dichash[10010] = { 0 }; char C[16][16]; int matchedflag = 0; char semimatched[10010][16] = { 0 }; int matchedcnt = 0; void LCS(char *a, char *b, int al, int bl); int Matched(char *a, char *b){ int al = strlen(a); int bl = strlen(b); LCS(a, b, al, bl); int matchedlength = C[al][bl]; matchedflag = 0; if (matchedlength == al && matchedlength == bl){ matchedflag = 1; } else{ if ((matchedlength == al && matchedlength == bl - 1) || (matchedlength == bl && matchedlength == al - 1)){ strcpy(semimatched[matchedcnt++], b); } else if (matchedlength == al - 1 && matchedlength == bl - 1){ int dismatchedcnt = 0; for (int j = 0; j < al; j++){ if (a[j] != b[j]) dismatchedcnt++; } if (dismatchedcnt == 1){ strcpy(semimatched[matchedcnt++], b); } } } return matchedflag; } int main(){ char temp[16] = { 0 }; int cnt = 0; while (scanf("%s", temp) && (strcmp(temp, "#"))){ strcpy(dic[cnt], temp); dichash[cnt] = strlen(temp); cnt++; } while (scanf("%s", temp) && (strcmp(temp, "#"))){ memset(semimatched, 0, sizeof(semimatched)); matchedcnt = 0; int templenth = strlen(temp); for (int i = 0; i < cnt; i++){ if (dichash[i] == templenth - 1 || dichash[i] == templenth || dichash[i] == templenth + 1) if (Matched(temp, dic[i])){ printf("%s is correct\n", temp); break; } } if (!matchedflag){ printf("%s:", temp); for (int j = 0; j < matchedcnt; ++j){ printf(" %s", semimatched[j]); } putchar('\n'); } } return 0; } void LCS(char *a, char *b, int al, int bl){ memset(C, 0, sizeof(C)); for (int i = 1; i <= al; i++){ for (int j = 1; j <= bl; j++){ if (a[i - 1] == b[j - 1]){ C[i][j] = C[i - 1][j - 1] + 1; } else if (C[i - 1][j] >= C[i][j - 1]){ C[i][j] = C[i - 1][j]; } else{ C[i][j] = C[i][j - 1]; } } } } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator