UVa 1605 - Building for UN(构造法)

输入国家的个数,建造大楼使的每两个国家都有办公室相连。

例题书上给了很巧妙的思路,建造两层的n*n的大楼,第一层的第i行的都是国家i,第二层的第j列都是国家j。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include<cstdio>
#include<map>
using namespace std;
map<int,char> c;
int main(){
for(int i=0;i<26;++i)
c[i]='A'+i;
for(int i=26;i<52;++i)
c[i]='a'+i-26;
int n;
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",c[i]);
printf("\n");
}
printf("\n");
for(int i=0;i<n;++i){
for(int j=0;j<n;++j)
printf("%c",c[j]);
printf("\n");
}
}
return 0;
}

** 本文迁移自我的CSDN博客,格式可能有所偏差。 **