这道题紫书上给出了一个很有趣的方法,按照这种规则排出的大楼一定能够满足任意两个不同的国家有一对相邻的格子(要么是同层中有公共边的格子,要么是相邻层的同一个格子) 至于证明我实在证明不了,只能确定它一定是成立的,读者不妨尝试着打印出来看看
#include<bits/stdc++.h> using namespace std; int n; int a[100] = {65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122}; int main(){ int ans = 0; while(~scanf("%d",&n)){ printf("2 %d %d\n",n,n); for(int i=0;i<n;i++){ for(int j=0;j<n;j++){ printf("%c",(char)a[i]); } printf("\n"); } printf("\n"); for(int i=0;i<n;i++){ for(int j=0;j<n;j++){ printf("%c",(char)a[j]); } printf("\n"); } if(ans) printf("\n"); else ans = 1; } return 0; }