首页 > ACM题库 > HDU-杭电 > hdu 3550 Graph Generation待解决[解题报告]C++
2014
11-05

hdu 3550 Graph Generation待解决[解题报告]C++

Graph Generation

问题描述 :

You are design a graphics generator to create a graph called "GStar".
GStar is defined by recursive, the first level "GStar", the GStar(1), is a square like the graph below:
+-+
|.|
+-+
Then we divide every edge of the GStar(1) into three part, and draw a new square outward on the middle part. Thus we get the GStar(2), like the graph below:
….+-+….
….|.|….
..+-+.+-+..
..|…..|..
+-+…..+-+
|………|
+-+…..+-+
..|…..|..
..+-+.+-+..
….|.|….
….+-+….
We can get GStar(n) from GStar(n-1) by split the outer bound of every edge on GStar(n-1) into three part and draw a square outward taking place the middle part.
The following graph is the GStar(3), pay attention that outer bound touches itself but the inner part are also "outer bound", so the edges are used in generation on the next level of GStar.
…………….+-+…………….
…………….|.|…………….
…………..+-+.+-+…………..
…………..|…..|…………..
…………+-+…..+-+…………
…………|………|…………
……….+-+-+…..+-+-+……….
……….|.|.|…..|.|.|……….
……..+-+.+-+…..+-+.+-+……..
……..|……………..|……..
……+-+……………..+-+……
……|…………………|……
….+-+-+……………..+-+-+….
….|.|.|……………..|.|.|….
..+-+.+-+……………..+-+.+-+..
..|………………………..|..
+-+………………………..+-+
|……………………………|
+-+………………………..+-+
..|………………………..|..
..+-+.+-+……………..+-+.+-+..
….|.|.|……………..|.|.|….
….+-+-+……………..+-+-+….
……|…………………|……
……+-+……………..+-+……
……..|……………..|……..
……..+-+.+-+…..+-+.+-+……..
……….|.|.|…..|.|.|……….
……….+-+-+…..+-+-+……….
…………|………|…………
…………+-+…..+-+…………
…………..|…..|…………..
…………..+-+.+-+…………..
…………….|.|…………….
…………….+-+…………….

输入:

The input contains several test cases, the first line of test case contains an integer denoting the number of test cases.
For each test cases, there are only three integers K, X, Y. Where K denoting the level of GStar. And you are to output a part of the graph from (X,Y) to (X+9,Y+9), a 10*10 matrix. Where the top-left corner is define as (0,0) and the Y-th character of X-th line is define as (X-1,Y-1). Notice that the empty cell are filled with ".". (1 <= K <= 10, 0 <= X, Y <= 30000)

输出:

The input contains several test cases, the first line of test case contains an integer denoting the number of test cases.
For each test cases, there are only three integers K, X, Y. Where K denoting the level of GStar. And you are to output a part of the graph from (X,Y) to (X+9,Y+9), a 10*10 matrix. Where the top-left corner is define as (0,0) and the Y-th character of X-th line is define as (X-1,Y-1). Notice that the empty cell are filled with ".". (1 <= K <= 10, 0 <= X, Y <= 30000)

样例输入:

3
1 1 1
2 1 1
5 88 72

样例输出:

Case 1:
.|........
-+........
..........
..........
..........
..........
..........
..........
..........
..........
Case 2:
...|.|....
.+-+.+-+..
.|.....|..
-+.....+-+
.........|
-+.....+-+
.|.....|..
.+-+.+-+..
...|.|....
...+-+....
Case 3:
+-+.......
|.........
+-+.......
|.|.......
+-+-+.+-+.
..|.|.|.|.
..+-+-+-+.
....|.|...
..+-+-+-+.
..|.|.|.|.