比赛场次 171
比赛名称 20120919dfs
比赛状态 已结束比赛成绩
开始时间 2012-09-19 19:00:00
结束时间 2012-09-19 22:00:00
开放分组 全部用户
注释介绍
题目名称 画海岛地图
输入输出 island.in/out
时间限制 1000 ms (1 s)
内存限制 128 MiB
测试点数 5 简单对比
用户 结果 时间 内存 得分
Gravatar苏轼 AAAAA 0.029 s 3.16 MiB 100
GravatarMakazeu AAAAA 0.109 s 1.94 MiB 100

画海岛地图

★★   输入文件:island.in   输出文件:island.out   简单对比
时间限制:1 s   内存限制:128 MiB

【问题描述】

用 N*N(1<=N<=8) 的格点阵代表海,其中 * 代表岛。给你一组编码信息,让你重构一张地图。这组信息是按垂直方向、水平方向岛的分布情况摘取的。下例中,每行右边的数字按顺序表示该行中“岛组”的大小,如第一行数字为“ 1 2 ”,表示该行第一“岛组”由一个岛组成,第二“岛组”由两个岛组成,而第四列下面的“ 2 3 ”则表示本列由两个“岛组”组成,第一个“岛组”由两个岛组成,第二个“岛组”由三个岛组成。

现要求你编程解决下列问题:读取一个信息块,根据信息块重构地图(若有多个解,逐个构成地图)。

【输入格式】

第一行:N,N表示格点阵大小(N<=8)。

第 2—N+1 行,表示水平方向岛组信息。

第N+2—2N+1行,表示垂直方向岛组信息。

所有的島組信息都是以0結尾。

【输出格式】

第一行:岛组编号。

第2—N+1行:*号表示的地图。

若有多个解时,按上面格式依次输出(输出顺序按地图中最上,最左边的*号位置(i,j)由小到大排序,i是第一关键字,j是第二关键字);若无解时,输出'no'。

【输入样例】

8
1 1 1 1 0
1 1 1 1 0
1 1 1 1 0
1 1 1 1 0
1 1 1 1 0
1 1 1 1 0
1 1 1 1 0
1 1 1 1 0
1 1 1 1 0
1 1 1 1 0
1 1 1 1 0
1 1 1 1 0
1 1 1 1 0
1 1 1 1 0
1 1 1 1 0
1 1 1 1 0

【输出样例】

1
* * * *
 * * * *
* * * *
 * * * *
* * * *
 * * * *
* * * *
 * * * *
2
 * * * *
* * * *
 * * * *
* * * *
 * * * *
* * * *
 * * * *
* * * *