原题链接: UVa1605
题目大意:
模有若干国家需要在联合国大楼里办公,需要把每个格子分配给一个国家,使得任意两个不同的国家都有一堆相邻的格子(要么是同层中间中间隔着墙,要么是一个的地板是另一个天花板)。
解题思路:
一开始看了题之后,不知道该如何下手,主要是被样例误导了,以为要是用尽量少的格子。然后看了紫书上给的分析,瞬间我有一句mnp要讲。这就是一个脑筋急转弯啊。一下子就变成一道锻炼输出格式的题。
既然没有要求最少,最简单的方法就是用两层,第一次每个国家i占一行,第二层每个国家i占一层。这样就能满足题意所有国家必须相邻的条件。
代码:
#include<iostream>
using namespace std;
int main()
{
int n;
while (cin >> n) {
cout << "2 " << n << " " << n << endl;
for(int i = 0 ; i < n ;i++){
for (int j = 0; j < n;j++) {
if (i < 26) cout << (char)(i + 65);
else cout << (char)(i - 26 + 97);
}
cout << endl;
}
cout << endl;
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
if (j < 26) cout << (char)(j + 65);
else cout << (char)(j - 26 + 97);
}
cout << endl;
}
cout << endl;
}
return 0;
}