[ An Ac a Day ^_^ ] hrbust 2291 Help C5 分形
开博客这么久从来没写过自己学校oj的题解 今天写一篇吧 嘿嘿
原题链接:http://acm.hrbust.edu.cn/index.php?m=ProblemSet&a=showProblem&problem_id=2291
这是我大一的第一次校赛的题目 接触的第一道分形题 当时还想傻傻的printf……
这道题oj上开2200*2200就可以了 实际上是6500*6500的样子……
分形重要的是找到递归的基础点 然后根据基础点去描述图形 然后完成打印
比如这道题的图案
CC
C
CC
我选的是第二行唯一一个C作为基础点
设_deep为下一层图案的大小
那么五个递归点就可以分别描述为(竖着的是x轴 横着的是y轴 这就是个二维数组嘛)
(x-deep,y+deep) (x-deep,y+2*deep)
(x,y)
(x+deep,y+deep) (x-deep,y+2*deep)
然后递归打印就可以了^_^~
可以当deep=0时输出 也可以deep=1时输出
为了区别一下我是自己写的 我就deep=1了 2333~
#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cmath>
#include<cstring>
#include<string>
#include<bitset>
#include<map>
#include<set>
#include<stack>
#include<vector>
#include<queue>
#include<list>
#define M(a,b) memset(a,b,sizeof(a))
using namespace std;
typedef long long ll;
const int inf=0x3f3f3f3f;
const int maxn=2e3+;
const int mod=1e7+;
int dx[]= {,,,-,,-,,-};
int dy[]= {,-,,,-,,,-};
//---------------------------------------ヽ(^。^)丿
char a[maxn][maxn]; void make(int x,int y,int deep){
if(deep==){
a[x-][y]=' ',a[x-][y+]='C',a[x-][y+]='C';
a[x][y]='C';
a[x+][y]=' ',a[x+][y+]='C',a[x+][y+]='C';
return ;
}
int _deep=(int)(pow(,deep-)+0.5);
make(x-_deep,y+_deep,deep-);
make(x-_deep,y+_deep+_deep,deep-);
make(x,y,deep-);
make(x+_deep,y+_deep,deep-);
make(x+_deep,y+_deep+_deep,deep-);
} int main(){
int T;
scanf("%d",&T);
while(T--){
int n;
scanf("%d",&n);
M(a,' ');
if(n==){
printf("C\n");
continue;
}
int deep=(int)(pow(,n)+0.5);
make(deep/+,,n);
for(int i=;i<=deep;i++){
for(int j=deep;j>=;j--){
if(a[i][j]=='C'){
a[i][j+]='\0';
break;
}
}
}
for(int i=;i<=deep;i++){
int j=;
while(a[i][j]) printf("%c",a[i][j++]);
printf("\n");
}
}
return ;
}
/* */
[ An Ac a Day ^_^ ] hrbust 2291 Help C5 分形的更多相关文章
- FF D8 FF FE 00 24 47 00转图片
String[] img = "FF D8 FF FE 00 24 47 00 9D 0C 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 F0 0 ...
- bzoj AC倒序
Search GO 说明:输入题号直接进入相应题目,如需搜索含数字的题目,请在关键词前加单引号 Problem ID Title Source AC Submit Y 1000 A+B Problem ...
- 彻底理解AC多模式匹配算法
(本文尤其适合遍览网上的讲解而仍百思不得姐的同学) 一.原理 AC自动机首先将模式组记录为Trie字典树的形式,以节点表示不同状态,边上标以字母表中的字符,表示状态的转移.根节点状态记为0状态,表示起 ...
- 基于trie树做一个ac自动机
基于trie树做一个ac自动机 #!/usr/bin/python # -*- coding: utf-8 -*- class Node: def __init__(self): self.value ...
- AC自动机-算法详解
What's Aho-Corasick automaton? 一种多模式串匹配算法,该算法在1975年产生于贝尔实验室,是著名的多模式匹配算法之一. 简单的说,KMP用来在一篇文章中匹配一个模式串:但 ...
- AC算法学习笔记
1.算法流程图 (1) void Init() 此函数是初始化函数,用来给fail数组和goto数组初始化值. (2) void GotoFunction(string x) 这个函数的作 ...
- 四种比较简单的图像显著性区域特征提取方法原理及实现-----> AC/HC/LC/FT。
laviewpbt 2014.8.4 编辑 Email:laviewpbt@sina.com QQ:33184777 最近闲来蛋痛,看了一些显著性检测的文章,只是简单的看看,并没有深入的研究,以 ...
- python爬虫学习(11) —— 也写个AC自动机
0. 写在前面 本文记录了一个AC自动机的诞生! 之前看过有人用C++写过AC自动机,也有用C#写的,还有一个用nodejs写的.. C# 逆袭--自制日刷千题的AC自动机攻克HDU OJ HDU 自 ...
- python爬虫学习(7) —— 爬取你的AC代码
上一篇文章中,我们介绍了python爬虫利器--requests,并且拿HDU做了小测试. 这篇文章,我们来爬取一下自己AC的代码. 1 确定ac代码对应的页面 如下图所示,我们一般情况可以通过该顺序 ...
随机推荐
- UIKit
UIAlertView UIAlertView 调用创建好对象的[testObject show]的show方法即可弹出UIAlertView UILabel UILabel常见属性 text:显示文 ...
- shell中bash的常见命令
shell 在计算机科学中,Shell俗称壳,用来区别Kernel(核) Shell分类:1:图形界面shell:通过提供友好的可视化界面,调用相应应用程序,如windows系列操作系统,Linux系 ...
- Canvas裁剪和Region、RegionIterator
主要是看这边文章学习:http://blog.csdn.net/lonelyroamer/article/details/8349601 Region.op参数 DIFFERENCE(0), //最终 ...
- Angular-ui-router + oclazyload + requirejs实现资源随route懒加载
刚开始用angularjs做项目的时候,我用的是ng-router,觉得加载并不好.所以就用了ui-router,考虑到在app上网页加载速度太慢,所以我就想到了用懒加载,看下是否能提升性能,提高加载 ...
- Importing Product Images on Magento
Multiple product images of each type can be imported into Magento, and associated with a specific pr ...
- [转] windows 上用程序putty使用 ssh自动登录Linux(Ubuntu)
需求: 在Win7电脑上使用putty(一种ssh客户端)连接Ubuntu 工具: puttygen.exe 和 putty.exe 第一步:生成密匙 运行puttygen.exe,选择需要的密匙类型 ...
- 利用python 与 wmi 获取WINDOWS基本信息
#!/usr/bin/env python3.5 # -*- coding:utf8 -*- import platform import subprocess import wmi def serv ...
- Framebuffer的配置及应用——先转载留着,以后一定要弄懂
http://blog.csdn.net/tju355/article/details/6881389 借助于framebuffer,我们能够在console下面作很多事情.首先下载framebu ...
- swift UILabel加载html源码
@IBOutlet weak var content: UILabel! func setup(content:String){ self.content.preferredMaxLayoutWidt ...
- 在CDlinux下编译安装无线网卡驱动
环境 主机:ThinkPadT440P 系统:CDlinux9.7.1 概述 准备利用CDlinux来破解周围的wifi密码来免费蹭网,由于笔记本是新买的,系统没有自带驱动,只能自己手动到网上下载.编 ...