uva806 Spatial Structures 空间结构 (黑白图像的四分树表示)
input
8
00000000
00000000
00001111
00001111
00011111
00111111
00111100
00111000
-8
9 14 17 22 23 44 63 69 88 94 113 -1
2
00
00
-4
0 -1
0
output
Image 1
9 14 17 22 23 44 63 69 88 94 113
Total number of black nodes = 11 Image 2
........
........
....****
....****
...*****
..******
..****..
..***... Image 3
Total number of black nodes = 0 Image 4
****
****
****
**** 这题目就是给你黑白点图的两种表示方法让你互相转化,写的时候没注意格式。
数字是代表四分树黑色结点到根的距离,由于定义是递归的,所以不必真的把树建出来。
/*
Created by Rey Chen on 2015.6.30
Copyright (c) 2015 Rey . All rights reserved.
*/ #include<cstdio>
#include<algorithm>
using namespace std;
const int maxn = ; char G[maxn][maxn]; int path[maxn*maxn];
int sz; void solve1(int r1,int c1,int r2,int c2,int wei,int sum)
{
bool whi, bla; whi = bla = false;
for(int i = r1;i <= r2;i++)
for(int j = c1;j <= c2;j++){
if(!bla && G[i][j] == '') bla = true;
if(!whi && G[i][j] == '') whi = true;
if(whi&&bla) { break;}
}
if(bla) {
if(!whi) {path[++sz] = sum; return;}
}else if(whi) return; int dvr = r1+r2>>, dvc = c1+c2>>;
int nwei = *wei;
solve1( r1, c1,dvr,dvc,nwei,sum+ wei );
solve1( r1,dvc+,dvr, c2,nwei,sum+(wei<<));
solve1(dvr+, c1 ,r2,dvc,nwei,sum+ wei* );
solve1(dvr+,dvc+, r2 ,c2,nwei,sum+(wei<<));
} int a[];
void draw(int n,int r1,int c1,int r2,int c2){
int Sz = ;
while(n){ a[Sz++]=n%;n/=;}
for(int i = ; i < Sz;i++){
switch (a[i]){
case :{
r2 = r1+r2>>; c2 = c1+c2>>;
break;
}
case :{
r2 = r1+r2>>; c1 = (c1+c2>>)+;
break;
}
case :{
r1 = (r1+r2>>)+; c2 = c1+c2>>;
break;
}
case :{
r1 = (r1+r2>>)+; c1 = (c1+c2>>)+;
break;
}
}
}
for(int i = r1;i <= r2;i++)
for(int j = c1;j <= c2;j++)
G[i][j] = '*';
} int main()
{
int n;
int Cas = ;
while(~scanf("%d",&n)&&n){
if(Cas) puts("");
if(n>){
for(int i = ; i < n; i++)
scanf("%s",G[i]);
sz = ;
solve1(,,n-,n-,,);
sort(path+,path+sz+); printf("Image %d\n",++Cas);
for(int i = ; i < sz; i++)//PE了。。。
printf("%d%c",path[i],i%?' ':'\n');
if(sz)printf("%d\n",path[sz]);
printf("Total number of black nodes = %d\n",sz);
}else {
n = -n;
int t;
for(int i = ;i < n;i++){
for(int j = ;j < n;j++)
G[i][j]='.';
G[i][n] = '\0';
} while(scanf("%d",&t)&&~t){
draw(t,,,n-,n-);
}
printf("Image %d\n",++Cas);
for(int i = ;i < n;i++)
puts(G[i]);
} }
return ;
}
uva806 Spatial Structures 空间结构 (黑白图像的四分树表示)的更多相关文章
- UVA-806 Spatial Structures (四分树)
题目大意:将一块图像上的黑点在两种表示法之间转换. 题目分析:递归下去... 注意:输出时要注意细节!!! 代码如下: # include<iostream> # include<c ...
- [刷题]算法竞赛入门经典(第2版) 6-8/UVa806 - Spatial Structures
题意:黑白图像的路径表示法 代码:(Accepted,0.120s) //UVa806 - Spatial Structures //Accepted 0.120s //#define _XIENAO ...
- [ActionScript 3.0] AS3.0 将图像的Alpha通道转换为黑白图像(分离ARGB方式)
import flash.display.BitmapData; import flash.display.Bitmap; /** * 将图像的Alpha通道转换为黑白图像(分离ARGB方式) */ ...
- [ActionScript 3.0] AS3.0将图像的Alpha通道转换为黑白图像(复制通道方式)
import flash.display.BitmapData; /** * 将图像的Alpha通道转换为黑白图像 */ var p:Point = new Point(0,0); var bmpd: ...
- 黑白图像(DFS)
输入一个n*n的黑白图像(1表示黑色,0表示白色),任务是统计其中八连块的个数.如果两个黑格子有公共边或者公共顶点,就说它们属于同一个八连块.如图6-11所示的图形有3个八连块. 图6-11 拥有3 ...
- UVA 806 Spatial Structures
题意: 如果某一大区域所有色块颜色是相同的,那么这一个大区域就算作一块,如果不同,则将其划分成四个小区域,然后重复上述步骤递归进行直到所有区域的颜色相同为止.然后根据上面划分的区域建树,小区域作为大区 ...
- TZOJ 3533 黑白图像(广搜)
描述 输入一个n*n的黑白图像(1表示黑色,0表示白色),任务是统计其中八连块的个数.如果两个黑格子有公共边或者公共顶点,就说它们属于同一个八连块.如图所示的图形有3个八连块. 输入 第1行输入一个正 ...
- MATLAB读取黑白图像显示却是黑色,24位深转8位深黑白图像解决方法
1.24位深转8位深: ps将24位深原图.png保存为GIF图256即为8位,再将8位gif图转为需要的.png,即转为8位深png图. 2.MATLAB读取黑白图像显示几乎全为黑色: 这是最近处理 ...
- 小白书 黑白图像【DFS/Flood Fill】
http://blog.csdn.net/u010470972/article/details/33415617 Description 输入一个n×n的黑白图像(1表示黑色,0表示白色),任务是统计 ...
随机推荐
- mysql由浅入深探究(二)----mysql用户操作
上一节我们完成了mysql的安装,现在我们将开启实战模式,完成一些基本的mysql操作.这节我们分为一些几个内容: mysql中用户新建 mysql中用户删除 mysql中用户修改 mysql中用户查 ...
- 使用makefile编译多个文件(.c , .cpp , .h等)
有时候我们要一次运行多个文件,这时候我们可以使用Makefile!!! ◊make是什么? make是一个命令工具,是一个解释makefile中指令的命令工具.它可以简化编译过程里面所下达的指令,当执 ...
- javascript的程序控制结构及语句------(2)循环控制语句、跳转语句、对话框
一.循环控制语句 循环语句主要就是在满足条件的情况下反复执行某一个操作,循环控制语句主要包括while语句.do...while语句 和for语句. 1.While语句 语法: While(条件表达式 ...
- JS动态append之后点击事件无效
今天做项目用了append向HTML里面添加结构代码,代码添加之后,单击事件就没反应了.搞得我一脸懵逼,调了代码很久实在不行,我百度了一下才发现,append添加的节点单击事件是不会生效的. 原因: ...
- Exception inside CORBA when accessing a remote bean
http://stackoverflow.com/questions/23291520/exception-inside-corba-when-accessing-a-remote-bean
- C# Monitor与线程同步
Monitor对象(C#知识点总结系列:4.C#中Monitor和Lock以及区别) 1.Monitor.Enter(object)方法是获取锁,Monitor.Exit(object)方法是释放锁, ...
- 蓝桥校内选拔赛B题(不一定正确)
由于没报名,只能靠别人发的截图来做了 我的思路:全排列,判断加号位置,判断/位置,看是否存在这个相等的 时间复杂度较高,在10e8左右 代码: #include<cstdio> #incl ...
- java.sql.SQLException: No suitable driver found for jdbc:hive://localhost:10000/default
error: java.sql.SQLException: No suitable driver found for jdbc:hive://localhost:10000/default at ja ...
- Sam's Numbers 矩阵快速幂优化dp
https://www.hackerrank.com/contests/hourrank-21/challenges/sams-numbers 设dp[s][i]表示产生的总和是s的时候,结尾符是i的 ...
- 网页抓取解析,使用JQuery选择器进行网页解析
最近开发一个小功能,数据库中一个基础表的数据从另一个网站采集. 因为网站的数据不定时更新,需要更新后自动采集最新的内容. 怎么判断更新数据没有? 好在网站有一个更新日志提示的地方,只需要对比本地保留的 ...