Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <cstdio>
- #include <cstring>
- #include <algorithm>
- #define MAX 10000
- using namespace std;
- char prods[MAX][30], ans[MAX][30];
- int N, L;
- int dist (char *s1, char *s2, int len1, int len2)
- {
- int ret[30][30], minimum = -1;
- for (int i = 0; i < len1; i++)
- ret[i][0] = i;
- for (int i = 0; i < len2; i++)
- ret[0][i] = i;
- for (int i = 0; i < len1; i++)
- for (int k = 0; k < len2; k++)
- {
- if (s1[i] == s2[k])
- ret[i][k] = ret[i - 1][k - 1];
- else
- {
- minimum = min (ret[i - 1][k] + 1, ret[i][k - 1] + 1);
- ret[i][k] = min (minimum, ret[i - 1][k - 1] + 1);
- }
- }
- return ret[len1 - 1][len2 - 1];
- }
- void input ()
- {
- char alarm_code[30];
- int n = 0;
- scanf ("%d", &N);
- for (int k = 0; k < N; k++)
- scanf ("%s", prods[k]);
- scanf ("%d", &L);
- for (int k = 0; k < L; k++)
- {
- scanf ("%s", alarm_code);
- for (int i = 0; i < N; i++)
- if (dist (prods[i], alarm_code, strlen (prods[i]), strlen (alarm_code)) == 1)
- {
- strcpy (ans[n++], alarm_code);
- break;
- }
- }
- printf ("%d\n", n);
- for (int k = 0; k < n; k++)
- printf ("%s\n", ans[k]);
- }
- int main ()
- {
- input ();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement