diff options
author | Nguyễn Gia Phong <vn.mcsinyx@gmail.com> | 2019-12-15 15:09:13 +0700 |
---|---|---|
committer | Nguyễn Gia Phong <vn.mcsinyx@gmail.com> | 2019-12-15 15:09:13 +0700 |
commit | 9e28e4c7b67c54229df11d355047ac8a88ea1817 (patch) | |
tree | 0d9d40db69613c2c49564a3f1987a005d61f4db3 /NTU/pali2.c | |
parent | 67393f42f41ab92219deb549f711121c4dab845b (diff) | |
download | cp-9e28e4c7b67c54229df11d355047ac8a88ea1817.tar.gz |
Normalize pathname
Diffstat (limited to 'NTU/pali2.c')
-rw-r--r-- | NTU/pali2.c | 68 |
1 files changed, 0 insertions, 68 deletions
diff --git a/NTU/pali2.c b/NTU/pali2.c deleted file mode 100644 index 72c9105..0000000 --- a/NTU/pali2.c +++ /dev/null @@ -1,68 +0,0 @@ -#include <stdio.h> -#include <stdlib.h> -#include <string.h> - -short MIN_K, *P; - -void putnc(char *s, short len) -{ - short i; - - for (i = 0; i < len; i++) - putchar(s[i]); - putchar(10); -} - -char palin(char *s, short len) -{ - short i; - - for (i = 0; i < (len + 1) / 2; i++) - if (s[i] != s[len - i - 1]) - return 0; - - return 1; -} - -void foo(char *s, short len, short k, short *p) -{ - short i, j; - - if (palin(s, len)) { - MIN_K = k; - memcpy(P, p, k * sizeof(short)); - return; - } - - if (k >= MIN_K) - return; - - for (i = len - 1; i; i--) - if (palin(s, i)) { - p[k] = p[k - 1] + i; - foo(s + i, len - i, k + 1, p); - } -} - -int main() -{ - short n, i, *p; - char *s; - - scanf("%hd\n", &n); - s = malloc(n + 1); - fgets(s, n + 1, stdin); - - MIN_K = n; - P = malloc(n); - p = malloc(n); - p[0] = 0; - foo(s, n, 1, p); - - printf("%hd\n", MIN_K); - for (i = 1; i < MIN_K; i++) - putnc(s + P[i - 1], P[i] - P[i - 1]); - puts(s + P[MIN_K - 1]); - - return 0; -} |