题目大意:将一块图像上的黑点在两种表示法之间转换。

题目分析:递归下去。。。

注意:输出时要注意细节!!!

代码如下:

# include<iostream>
# include<cstdio>
# include<vector>
# include<string>
# include<cstring>
# include<algorithm>
using namespace std; char p[80][80];
int ans;
vector<int>v; int get(int r,int c,int w)
{
int cnt=0;
for(int i=r;i<r+w;++i)
for(int j=c;j<c+w;++j)
if(p[i][j]=='1')
++cnt;
return cnt;
} int getVal(string path)
{
int l=path.size();
int res=0;
for(int i=l-1;i>=0;--i)
res=res*5+path[i]-'0';
return res;
} ///查看以(r,c)为左上角,边长为w的子正方形。下同。
void f1(int r,int c,int w,string path)
{
int k=get(r,c,w);
if(k==0)
return ;
if(k==w*w){
++ans;
v.push_back(getVal(path));
return ;
}
f1(r,c,w/2,path+'1');
f1(r,c+w/2,w/2,path+'2');
f1(r+w/2,c,w/2,path+'3');
f1(r+w/2,c+w/2,w/2,path+'4');
} void f2(int r,int c,int w,int s)
{
if(s==0){
for(int i=r;i<r+w;++i)
for(int j=c;j<c+w;++j)
p[i][j]='*';
return ;
}
int mod=s%5;
if(mod==1)
f2(r,c,w/2,s/5);
else if(mod==2)
f2(r,c+w/2,w/2,s/5);
else if(mod==3)
f2(r+w/2,c,w/2,s/5);
else if(mod==4)
f2(r+w/2,c+w/2,w/2,s/5);
} int main()
{
//freopen("UVA-806 Spatial Structures.txt","r",stdin);
int n,cas=0,flag=0;
while(scanf("%d",&n)&&n)
{
v.clear();
if(flag)
printf("\n");
flag=1;
if(n>0){
for(int i=0;i<n;++i)
scanf("%s",p[i]);
printf("Image %d\n",++cas);
ans=0;
f1(0,0,n,"");
sort(v.begin(),v.end());
int l=v.size();
for(int i=0;i<l;++i)
printf("%d%c",v[i],(i%12==11||i==l-1)?'\n':' ');
printf("Total number of black nodes = %d\n",ans);
}
if(n<0){
n=-n;
for(int i=0;i<n;++i){
for(int j=0;j<n;++j)
p[i][j]='.';
p[i][n]=0;
}
int a;
while(scanf("%d",&a)&&a!=-1)
v.push_back(a);
printf("Image %d\n",++cas);
int l=v.size();
for(int i=0;i<l;++i)
f2(0,0,n,v[i]);
for(int i=0;i<n;++i)
puts(p[i]);
}
}
return 0;
}

  

UVA-806 Spatial Structures (四分树)的更多相关文章

  1. UVA 806 Spatial Structures

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

  2. UVA806-Spatial Structures(四分树)

    Problem UVA806-Spatial Structures Accept:329  Submit:2778 Time Limit: 3000 mSec Problem Description ...

  3. UVA - 297 Quadtrees (四分树)

    题意:求两棵四分树合并之后黑色像素的个数. 分析:边建树边统计. #include<cstdio> #include<cstring> #include<cstdlib& ...

  4. UVa 806 四分树

    题意: 分析: 类似UVa 297, 模拟四分树四分的过程, 就是记录一个左上角, 记录宽度wideth, 然后每次w/2这样递归下去. 注意全黑是输出0, 不是输出1234. #include &l ...

  5. UVA.297 Quadtrees (四分树 DFS)

    UVA.297 Quadtrees (四分树 DFS) 题意分析 将一个正方形像素分成4个小的正方形,接着根据字符序列来判断是否继续分成小的正方形表示像素块.字符表示规则是: p表示这个像素块继续分解 ...

  6. UVa 297 (四分树 递归) Quadtrees

    题意: 有一个32×32像素的黑白图片,用四分树来表示.树的四个节点从左到右分别对应右上.左上.左下.右下的四个小正方区域.然后用递归的形式给出一个字符串代表一个图像,f(full)代表该节点是黑色的 ...

  7. 四分树 (Quadtrees UVA - 297)

    题目描述: 原题:https://vjudge.net/problem/UVA-297 题目思路: 1.依旧是一波DFS建树 //矩阵实现 2.建树过程用1.0来填充表示像素 #include < ...

  8. uva806 Spatial Structures 空间结构 (黑白图像的四分树表示)

    input 8 00000000 00000000 00001111 00001111 00011111 00111111 00111100 00111000 -8 9 14 17 22 23 44 ...

  9. 搜索(四分树):BZOJ 4513 [SDOI2016 Round1] 储能表

    4513: [Sdoi2016]储能表 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 395  Solved: 213[Submit][Status] ...

随机推荐

  1. Code Forces 652C Foe Pairs

    C. Foe Pairs time limit per test 1 second memory limit per test 256 megabytes input standard input o ...

  2. 升级mac xcode打包证书报错 git 报错

    reset tryAgain git 在钥匙串中找不到指定的项  重新配置公钥撕咬 SSH keys An SSH key allows you to establish a secure conne ...

  3. 第二次作业(WordCount)重制版

    Github项目地址:https://gitee.com/DamonGetup/WordCount/tree/master 基本功能: 对程序设计语言源文件统计字符数.单词数.行数,统计结果以指定格式 ...

  4. Tensorflow中卷积的padding方式

    根据tensorflow中的Conv2D函数,先定义几个基本符号: 输入矩阵W*W,这里只考虑输入宽高相等的情况,如果不相等,推导方法一样 filter矩阵F*F,卷积核 stride值S,步长 输出 ...

  5. 'ascii' codec can't decode byte 0xc4 in position 27: ordinal not in range(128)

    This error happens when I try to run d:\linux\linuxkernel\android\内核\blog\BlogBackup(v1.1)source\htm ...

  6. android GridView的setOnItemClickListener事件不执行

    问题可能1: item设置的可能是button,或者可以click点击事件控件,导致控件执行而item按钮不执行 解决方法:设置控件 的  android:clickable="false& ...

  7. 002-Spring Framework-Core-01-IoC容器

    一.概述 文章地址:https://docs.spring.io/spring/docs/5.0.6.RELEASE/spring-framework-reference/ 核心主要包括:IoC co ...

  8. 运行HBase应用开发程序产生异常,提示信息包含org.apache.hadoop.hbase.ipc.controller.ServerRpcControllerFactory的解决办法

    Using Spark's default log4j profile: org/apache/spark/log4j-defaults.properties Exception in thread ...

  9. EF Code First学习笔记:数据库创建(转)

    控制数据库的位置 默认情况下,数据库是创建在localhost\SQLEXPRESS服务器上,并且默认的数据库名为命名空间+context类名,例如我们前面的BreakAway.BreakAwayCo ...

  10. 使用nagios+python监控nginx进程数

    1.编写python脚本监控nginx #!/usr/bin/python # -*- coding: utf-8 -*- import os, sys, time import string imp ...