ZOJ-2512
来源:互联网 发布:延安农村淘宝招聘信息 编辑:程序博客网 时间:2024/05/16 05:20
简单模拟,但还是强调细心再细心,再各种条件和情况考虑清楚就行,比如相遇情况和左右回绕
#include<stdio.h>#include<string.h>#include<stdlib.h>int is_symmetric(char *s, int len, int left, int right){ int begin = 1; while (1) { if (s[left] != s[right]) { return 0; } else if (!begin && (left == right || abs(left - right) == 1 || (left == 0 && right == len - 1))) { return 1; } else { left = left - 1 < 0 ? len - 1 : left - 1; right = right + 1 == len ? 0 : right + 1; begin = 0; } } return 0;}int main(){ char s[1001]; while (gets(s) != NULL) { int i, len = strlen(s), sym; for (i = 0; i < len; i++) { int left = i - 1 < 0 ? len - 1 : i - 1; int right = i + 1 == len ? 0 : i + 1; sym = is_symmetric(s, len, left, right); if (sym) { printf("Symmetric\n%d\n", i + 1); break; } if (i != len - 1) { left = i; sym = is_symmetric(s, len, left, right); if (sym) { printf("Symmetric\n%d-%d\n", i + 1, i + 2); break; } } } if (!sym) printf("Not symmetric\n"); } return 0;}
0 0