SHOW:
|
|
- or go back to the newest paste.
1 | int solve(char **a, int n) { | |
2 | int i, shifted_i, flag = 0; | |
3 | char *c; | |
4 | char hash[ASCII_LEN]; | |
5 | ||
6 | // Нулевая итерация | |
7 | clean_string(hash, ASCII_LEN); | |
8 | for (c = a[0]; *c; c++) { | |
9 | hash[(int) *c] = 1; | |
10 | } | |
11 | ||
12 | // Идем по массиву | |
13 | for (i = 1, shifted_i = 0; i < n; i++) { | |
14 | printf("-- %d\n", i); | |
15 | // Проверяем совпадения букв через хеш таблицу | |
16 | for (c = a[i]; *c; c++) { | |
17 | if ((int)hash[(int) *c] == 1) { | |
18 | printf("-- %d -- zhizha\n", i); | |
19 | flag = 1; | |
20 | break; | |
21 | } | |
22 | } | |
23 | ||
24 | - | for (c = a[shifted_i]; *c; c++) { |
24 | + | |
25 | clean_string(hash, ASCII_LEN); | |
26 | for (c = a[i]; *c; c++) { | |
27 | hash[(int) *c] = 1; | |
28 | } | |
29 | ||
30 | // Если буквы не совпадали (flag == 0), то никаких пертираний не будет | |
31 | if (flag == 0) { | |
32 | - | a[shifted_i] = a[i]; |
32 | + | |
33 | a[shifted_i] = a[i]; | |
34 | } | |
35 | ||
36 | // Готовим переменные к след итерации | |
37 | flag = 0; | |
38 | } | |
39 | shifted_i++; | |
40 | a[shifted_i] = a[i]; | |
41 | ||
42 | return shifted_i; | |
43 | } |