UVa 1605 要求為 $n$ 個國家設計最少辦公室的建築,使任意兩國至少有一對相鄰辦公室 (同層共牆或上下樓層同位置)。關鍵洞察:僅需兩層即可滿足所有 $n \le 50$。
#include
#include
int main() {
int n;
while (scanf("%d", &n) == 1) {
printf("2 %d %d\n", n, n);
/* 第 1 層:每列同一國家 */
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
if (i < 26) putchar('A' + i);
else putchar('a' + i - 26);
}
putchar('\n');
}
putchar('\n'); /* 層間空行 */
/* 第 2 層:每行同一國家 */
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
if (j < 26) putchar('A' + j);
else putchar('a' + j - 26);
}
putchar('\n');
}
putchar('\n'); /* 測資間空行 */
}
return 0;
}
2 4 4
AAAA
BBBB
CCCC
DDDD
ABCD
ABCD
ABCD
ABCD