题目链接:
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 }