UVA 1605 Building for UN(思维)

题目链接:

https://cn.vjudge.net/problem/UVA-1605#author=0

 1 /*
 2 问题 设计一个包含若干层的联合国大厦,其中每一层都是等大的网格,每个格子分配给一个国家,使得任意两个不同的国家
 3 都有一对相邻的格子,也就是说要么同层中有公共边的格子,要么是相邻层的同一个格子。
 4 解题思路 首先看到这个题感觉无从下手,有种先放弃的感觉,看了分析,又读了读题,最多50个国家,每个国家用大写或者
 5 小写字母表示,那分为两层,第一层的第i行是国家i,第二层的每j列国家j,这样就能保证,每两个国家都在相邻层有一个
 6 接触了,哇,瞬间感觉智商不够用了,题目看起来复杂,有时候要耐心分析一下,试试不同的角度。
 7 错误总结 见注释 
 8 */ 
 9 #include<cstdio>
10 
11 int main()
12 {
13     int i,j;
14     char map1[52][55];
15     char map2[52][55];
16     char list[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";//字符串数组初始化 
17     for(i=0;i<52;i++){
18         for(j=0;j<52;j++)
19             map1[i][j]=list[i];
20     }
21     for(i=0;i<52;i++){
22         for(j=0;j<52;j++)
23             map2[j][i]=list[i];//下标使用 
24     }    
25     
26     int n;
27     while(scanf("%d",&n) != EOF){
28         printf("2 %d %d
",n,n);
29         for(i=0;i<n;i++){
30             for(j=0;j<n;j++){
31                 printf("%c",map1[i][j]);
32             }
33             printf("
");
34         }
35         printf("
");
36         for(i=0;i<n;i++){
37             for(j=0;j<n;j++){
38                 printf("%c",map2[i][j]);
39             }
40             printf("
");
41         }
42     }
43     return 0;
44 }
原文地址:https://www.cnblogs.com/wenzhixin/p/8733427.html