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

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

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

代码如下:

# 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. 亿级别G级别文本数据去重

    亿级别G级别文本数据去重 文件总行数 字节数 去重后行数 [root@d mongoexport]# wc -l superpub-ask-question.csv126530681 superpub ...

  2. Python开发【Django】:Model操作(一)

    Django ORM基本配置 到目前为止,当我们的程序涉及到数据库相关操作时,我们一般都会这么搞: 创建数据库,设计表结构和字段 使用 MySQLdb 来连接数据库,并编写数据访问层代码 业务逻辑层去 ...

  3. requests获取所有状态码

    requests获取所有状态码 requests默认是不会获取301/302的状态码的.可以设置allow_redirects=False,这样就可以获取所有的状态码了 import requests ...

  4. 006-markdown基础语法

    1.标题 # 这是一级标题 ## 这是二级标题 ### 这是三级标题 #### 这是四级标题 ##### 这是五级标题 ###### 这是六级标题 2.字体 *这是倾斜的文字* **这是加粗的文字** ...

  5. Spark Shuffle(三)Executor是如何fetch shuffle的数据文件(转载)

    1. 前言 在前面的博客中讨论了Executor, Driver之间如何汇报Executor生成的Shuffle的数据文件,以及Executor获取到Shuffle的数据文件的分布,那么Executo ...

  6. loadrunner11的移动端性能测试之场景设计

    测试步骤之场景设计(Controller) 进入手工场景 准备好脚本后就可以进行场景设计和执行场景了,从VuGen中进入,见下图: 进入后第一个为目标场景,选择第二个更灵活的手工场景,我的目标人数20 ...

  7. 基因芯片与NGS区别[转载]

    转自:http://blog.sina.com.cn/s/blog_40d4ae110101fjzy.html 1 二代测序与基因芯片的区别与优缺点. 生物芯片相对第二代测序而言,优势在于价格便宜,便 ...

  8. WCF标准绑定以及传输协议与编码格式

    WCF 定义了9 种标准绑定: 基本绑定(Basic Binding) 由BasicHttpBinding类提供.基本绑定能够将WCF服务公开为旧的ASMX Web服务,使得旧的客户端能够与新的服务协 ...

  9. swoole gets

    控制器调用: function gets() { $model = Model('ap_pic'); $model->select = ' id, size_type '; $gets['pag ...

  10. 1、安装electron

    安装electron安装并非一帆风顺,我有FQ哈,所以网络方面我就不说了,你们不行的话,可以用cnpm,我说的是另一个问题 我是这样解决的,用以下命令就好了 sudo npm install -g e ...