UVa1605 Building for UN (构造法)

链接:http://vjudge.net/problem/51167

分析:

2 2 2 AB CC 

zz zz

2 8 8aaaaaaaabbbbbbbbccccccccddddddddeeeeeeeeffffffffgggggggghhhhhhhh

abcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefgh
 1 #include <cstdio>
 2
 3 int n;
 4
 5 int main() {
 6     while (scanf("%d", &n) == 1) {
 7         printf("2 %d %d\n", n, n);
 8         for (int i = 0; i < n; i++) {
 9             for (int j = 0; j < n; j++)
10                 putchar(i < 26 ? ‘a‘ + i : ‘A‘ + i - 26);
11                 printf("\n");
12         }
13
14         printf("\n");
15         for (int i = 0; i < n; i++) {
16             for (int j = 0; j < n; j++)
17                 putchar(j < 26 ? ‘a‘ + j : ‘A‘ + j - 26);
18                 printf("\n");
19         }
20         printf("\n");
21     }
22     return 0;
23 }
时间: 2024-10-09 15:37:46

UVa1605 Building for UN (构造法)的相关文章

UVa1605 - Building for UN(构造)

题目大意:有n个国家,要求你设计一栋楼并为这n个国家划分房间,要求国家的房间必须连通,且每两个国家之间必须有一间房间是相邻的 解题思路:刚开始以为很复杂,被样例给误导了,加上题意没审清,以为房间相邻必须在同一层...就这样被坑了好久 只需要设计两层就可以了,每个国家占第一层的每一行,占第二层的每一列,这样的话就既满足联通又相邻了 #include<cstdio> #include<cstring> #define maxn 60 char ans[maxn]="ABCDE

利用子集构造法实现NFA到DFA的转换

概述 NFA非有穷自动机,即当前状态识别某个转换条件后到达的后继状态不唯一,这种自动机不便机械实现,而DFA是确定有限状态的自动机,它的状态转换的条件是确定的,且状态数目往往少于NFA,所以DFA能够比较方便的机械实现且识别能力方面也和NFA相当.本次实验采用子集构造法来实现不带空弧的由NFA到DFA的转换. 子集构造法的算法如下: 设NFA为M=(K,Σ,f,S0,Z),则构造相应的DFA  M′=(Q,Σ,f′,I0,F)①取I0=S0:②对于状态集Q中任一尚未标记的状态qi={Si1,Si

生成子集 (增量构造法)

使用增量构造法可以构造出升序数组arr的不重复子集,并且按字典序排序 #include<bits/stdc++.h> using namespace std; int arr[16]; inline void print_subset(int *index, int cur, int n)///cur值这里可以理解为在这个堆栈层子集的集合数 { for(int i=0; i<cur; i++) {printf("%d ", arr[index[i]]);} if(cu

【算法竞赛入门经典】7.3子集生成【增量构造法】【位向量法】【二进制法】

7.3.1增量构造法 思路:一次选出一个元素放到集合中.自己对于递归的理解还是不够,这里虽然没有明确给出递归停止条件,但是如果无法继续添加元素,就不会再继续递归,然后就是我头疼的回溯啦. #include<stdio.h> int num[4],n; void A(int n,int *a,int ans) { for(int i = 0; i < ans; i ++)//打印当前元素 printf("%d ",a[i]); printf("\n"

UVa1605,Building for UN

我比较好奇的是uva后台是怎么测这题的 没什么可说的,那些不想敲但还是想直接交这题的直接copy过去吧 #include <iostream> #include <cstring> #include <cstdio> #include <string> #include <algorithm> #define maxn 100000 using namespace std; int main() { int n; while (cin>&g

子集生成——增量构造法+位向量法+二进制法

1.增量构造法: 原理图: 1 // 此算法仅用于输出下标,实际运用应输入另一个数组来进行数据的储存 2 #include <bits/stdc++.h> 3 using namespace std; 4 typedef long long ll; 5 typedef unsigned long long ull; 6 #define INF 0X3f3f3f3f 7 const ll MAXN = 1e3 + 7; 8 const ll MOD = 1e9 + 7; 9 int a[10];

uva1605 - Building for UN(构造法)

这道题构造出的结果很妙,考察思维能力.就两层,每层都n*n个格子,第一层第i行都放国家i,第二层第j列都放国家j. 需要注意的是ASCII中A至Z在a至z的前面(数字小),而且它们两组不挨着.所以需要char c(int i)这个函数. #include<iostream> #include<cstdio> #include<cstdlib> #include<cstring> #include<cmath> #include<map>

(白书训练计划)UVa 1605 Building for UN(构造法)

题目地址:UVa 1605 一道答案特判的题.最简单的方法是只构造两层,第一层中第i行全是i国家,第二层中第i列全是i国家.这样就保证了所有的国家都会相邻. 代码如下: #include <iostream> #include <cstdio> #include <string> #include <cstring> #include <stdlib.h> #include <math.h> #include <ctype.h&

UVA-1605 Building for UN (构造)

题目大意:n个国家的人要在一栋大厦里办公,要求任意两个国家的办公室要相邻(同层同边或邻层同面),设计一个满足要求的方案. 题目分析:题目限制较少,任意构造出一个解即可. 代码如下: # include<iostream> # include<cstdio> # include<cstring> # include<algorithm> using namespace std; int main() { int n,flag=0; while(~scanf(&