题解 P4327 【[COCI2006-2007#1] Okviri】

heidoudou

2018-08-03 09:15:47

Solution

用数组的都弱爆了。 第一行规律: `..#.` 或者 `..*.` 最后补一个 `.` 第二行规律: `.#.#` 或者 `.*.*` 最后补一个 `.` 第三行规律: 开始 `#`, 然后是 `.X.#` 或者 `.X.*`, 具体用哪个字符需要仔细观察一下。这里有点小坑。WA 了两次才发现有bug。 依次输出就行了。 ```cpp void printLine1(int n) { // n: num of characters for (int i = 1; i <= n; ++i) printf("..%c.", i % 3 == 0 ? '*': '#'); printf(".\n"); } void printLine2(int n) { // n: num of characters char c; for (int i = 1; i <= n; ++i) { c = i % 3 == 0 ? '*' : '#'; printf(".%c.%c", c, c); } printf(".\n"); } void printMainLine(const char s[], int n) { char c; putchar('#'); for (int i = 0; i < n; ++i) { c = (i % 3 == 0 || (i % 3 == 1 && i == n - 1)) ? '#' : '*'; printf(".%c.%c", s[i], c); } putchar('\n'); } void printFrame(const char s[]) { int l = strlen(s); printLine1(l); printLine2(l); printMainLine(s, l); printLine2(l); printLine1(l); // printf(""); } int main() { char s[MAX_N]; scanf("%s", s); printFrame(s); } ```