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 空间结构 (黑白图像的四分树表示)的更多相关文章

  1. UVA-806 Spatial Structures (四分树)

    题目大意:将一块图像上的黑点在两种表示法之间转换. 题目分析:递归下去... 注意:输出时要注意细节!!! 代码如下: # include<iostream> # include<c ...

  2. [刷题]算法竞赛入门经典(第2版) 6-8/UVa806 - Spatial Structures

    题意:黑白图像的路径表示法 代码:(Accepted,0.120s) //UVa806 - Spatial Structures //Accepted 0.120s //#define _XIENAO ...

  3. [ActionScript 3.0] AS3.0 将图像的Alpha通道转换为黑白图像(分离ARGB方式)

    import flash.display.BitmapData; import flash.display.Bitmap; /** * 将图像的Alpha通道转换为黑白图像(分离ARGB方式) */ ...

  4. [ActionScript 3.0] AS3.0将图像的Alpha通道转换为黑白图像(复制通道方式)

    import flash.display.BitmapData; /** * 将图像的Alpha通道转换为黑白图像 */ var p:Point = new Point(0,0); var bmpd: ...

  5. 黑白图像(DFS)

    输入一个n*n的黑白图像(1表示黑色,0表示白色),任务是统计其中八连块的个数.如果两个黑格子有公共边或者公共顶点,就说它们属于同一个八连块.如图6-11所示的图形有3个八连块. 图6-11  拥有3 ...

  6. UVA 806 Spatial Structures

    题意: 如果某一大区域所有色块颜色是相同的,那么这一个大区域就算作一块,如果不同,则将其划分成四个小区域,然后重复上述步骤递归进行直到所有区域的颜色相同为止.然后根据上面划分的区域建树,小区域作为大区 ...

  7. TZOJ 3533 黑白图像(广搜)

    描述 输入一个n*n的黑白图像(1表示黑色,0表示白色),任务是统计其中八连块的个数.如果两个黑格子有公共边或者公共顶点,就说它们属于同一个八连块.如图所示的图形有3个八连块. 输入 第1行输入一个正 ...

  8. MATLAB读取黑白图像显示却是黑色,24位深转8位深黑白图像解决方法

    1.24位深转8位深: ps将24位深原图.png保存为GIF图256即为8位,再将8位gif图转为需要的.png,即转为8位深png图. 2.MATLAB读取黑白图像显示几乎全为黑色: 这是最近处理 ...

  9. 小白书 黑白图像【DFS/Flood Fill】

    http://blog.csdn.net/u010470972/article/details/33415617 Description 输入一个n×n的黑白图像(1表示黑色,0表示白色),任务是统计 ...

随机推荐

  1. IIS 6.0曝远程代码执行漏洞CVE-2017-7269

    一.漏洞说明 漏洞编号:CVE2017-7269 影响中间件:IIS6.0 影响服务器版本:windows 2003 R2 二. 环境搭建 虚拟机kali : 192.168.1.2 靶机window ...

  2. jmeter+ant+jenkins实现自动化接口测试

    一.安装前准备 1.JDK:jdk-8u121-windows-x64 2.jmeter工具:apache-jmeter-2.13 3.ANT工具:apache-ant-1.9.7-bin 4.jen ...

  3. 30个Python物联网小实验3:使用按钮开灯关灯

    使用按钮开灯关灯 接线图非常简单,LED接GPIO17号口,按钮接GPIO2号口,负极接GND地线. 代码也非常简单: from gpiozero import LED, Button from si ...

  4. ue4 修改3dui内容

    修改text内容1 修改text内容2 上面的方法是对外公开某个控件,然后再蓝图中直接改控件内容 另一种更好的方法时,在控件上新建public变量,控件绑定到这个变量上,由蓝图直接改变这个public ...

  5. RVO算法

    http://blog.sina.com.cn/s/blog_6ad33d350102xqal.html 简介 在介绍VO,RVO之前,需要先介绍路径规划. 对Agent进行路径规划,实际上要完成的任 ...

  6. solidity 学习笔记(5)接口

    接口:不用实现方法,仅仅定义方法. pragma solidity ^; contract cat{ //cat实际上实现了接口animalEat,因为他们有相同的方法. string name; f ...

  7. 洛谷P1578 奶牛浴场

    P1578 奶牛浴场 题目描述 由于John建造了牛场围栏,激起了奶牛的愤怒,奶牛的产奶量急剧减少.为了讨好奶牛,John决定在牛场中建造一个大型浴场.但是John的奶牛有一个奇怪的习惯,每头奶牛都必 ...

  8. js框架:angularJs

    AngularJS是一个javascript框架,是一个以JavaScript编写的库,可通过<script>标签添加到HTML页面 AngularJS使得开发现代的单一页面应用程序(SP ...

  9. ES6新特性使用小结(五)

    十二.class 与 extends ①.类的基本定义和生成实例 { class Parent{ constructor(name='Lain'){ //定义构造函数 this.name = name ...

  10. 1081 Rational Sum(20 分)

    Given N rational numbers in the form numerator/denominator, you are supposed to calculate their sum. ...