码迷,mamicode.com
首页 > 其他好文 > 详细

UVa 1605 - Building for UN

时间:2017-12-14 22:09:19      阅读:142      评论:0      收藏:0      [点我收藏+]

标签:scan   互连   std   网格   can   print   for   pre   problem   

链接:

https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=4480

 

题意:

你的任务是设计一个包含若干层的联合国大楼,其中每层都是一个等大的网格。有若干国家需要在联合国大楼里办公,
你需要把每个格子都分配给其中一个国家,使得任意两个不同的国家都有一对相邻的格子(要么是同层中相邻的格子,要么是相邻层的同一个格子),
一个国家可以有多个相互连通的格子。你设计的大厦最多不能超过1000000个格子。
输入国家的个数n(n≤50),输出大楼的层数H、每层楼的行数W和列数L,然后是每层楼的平面图。不同国家用不同的大小写字母表示。

 

分析:

构造法。对于每个n都这样设计即可:

一共只有两层,每层都是 n*n 的,第一层第i行全是国家i,第二层第j列全是国家j。

 

代码:

 1 #include <cstdio>
 2 
 3 int main(){
 4     const char s[52+5] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
 5     int T = 0, n;
 6     while(~scanf("%d", &n)){
 7         if(T++) printf("\n");
 8         printf("2 %d %d\n", n, n);
 9         for(int t = 0; t < n; t++){
10             for(int i = 0; i < n; i++) printf("%c", s[t]);
11             printf("\n");
12         }
13         printf("\n");
14         for(int t = 0; t < n; t++){
15             for(int i = 0; i < n; i++) printf("%c", s[i]);
16             printf("\n");
17         }
18     }
19     return 0;
20 }

 

UVa 1605 - Building for UN

标签:scan   互连   std   网格   can   print   for   pre   problem   

原文地址:http://www.cnblogs.com/hkxy125/p/8040209.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!