Fractal---poj2083(递归和普通方法打印图形)
题目链接:http://poj.org/problem?id=2083
这题不能用G++提交...
见到两次知道有递归的写法,然而并不会,这次发现并不难;
- #include<stdio.h>
- #include<string.h>
- #include<iostream>
- using namespace std;
- int len[]= {,}, s[][];
- void dfs(int n, int x, int y)
- {
- s[x][y]=;
- if(n==)return ;
- int m = len[n];
- dfs(n+, x, y);///左上
- dfs(n+, x, y+*m);///左下
- dfs(n+, x+*m, y);///右上
- dfs(n+, x+m, y+m);///中间
- dfs(n+, x+*m, y+*m);///右下
- }
- int main()
- {
- memset(s, , sizeof(s));
- for(int i=; i<=; i++)
- len[i]=*len[i-];
- dfs(, , );
- int n;
- while(scanf("%d", &n), n!=-)
- {
- for(int i=; i<=len[n]; i++)
- {
- for(int j=; j<=len[n]; j++)
- {
- if(s[i][j]==)printf("X");
- else printf(" ");
- }
- printf("\n");
- }
- printf("-\n");
- }
- return ;
- }
下面是我写的比较恶心的代码:
- #include<stdio.h>
- #include<string.h>
- #define N 903
- #define met(a, b) memset(a, b, sizeof(a))
- struct node
- {
- int len;
- char s[N][N];
- }a[];
- void P1(char s[][N], int X1, int X2, int Y1, int Y2, char s0[][N])
- {
- for(int i=X1, p=; i<=X2; i++, p++)
- {
- for(int j=Y1, q=; j<=Y2; j++, q++)
- {
- s[i][j] = s0[p][q];
- }
- }
- }
- void P2(char s[][N], int X1, int X2, int Y1, int Y2)
- {
- for(int i=X1; i<=X2; i++)
- {
- for(int j=Y1; j<=Y2; j++)
- {
- s[i][j] = ' ';
- }
- }
- }
- void Init()
- {
- met(a, );
- a[].s[][] = 'X';
- a[].len = ;
- for(int i=; i<=; i++)
- {
- int n = a[i-].len;
- a[i].len = n*;
- P1(a[i].s, , n-, , n-, a[i-].s);
- P2(a[i].s, , n-, n, *n-);
- P1(a[i].s, , n-, *n, *n-, a[i-].s);
- P2(a[i].s, n, *n-, , n-);
- P1(a[i].s, n, *n-, n,*n-, a[i-].s);
- P2(a[i].s, n, *n-, *n, *n-);
- P1(a[i].s, *n, *n-, , n-, a[i-].s);
- P2(a[i].s, *n, *n-, n, *n-);
- P1(a[i].s, *n, *n-, *n, *n-, a[i-].s);
- }
- }
- int main()
- {
- Init();
- int n;
- while(scanf("%d", &n), n!=-)
- {
- for(int i=; i<a[n].len; i++)
- {
- for(int j=; j<a[n].len; j++)
- printf("%c",a[n].s[i][j]);
- printf("\n");
- }
- printf("-\n");
- }
- return ;
- }
Fractal---poj2083(递归和普通方法打印图形)的更多相关文章
- for 循环打印图形
public class For { public static void main(String[] args) { //"使用双层for循环打印图形时,外层管行,内层管列",那 ...
- 打印图形|2014年蓝桥杯B组题解析第五题-fishers
打印图形 小明在X星球的城堡中发现了如下图形和文字: rank=3 rank=5 rank = 6 小明开动脑筋,编写了如下的程序,实现该图形的打印. 答案:f(a, rank-1, row, col ...
- python中for嵌套打印图形
# 打印出九九乘法表 1 * 1 = 1 2 * 1 = 2 2 * 2 = 4 3 * 1 = 3 3 * 2 = 6 3 * 3 = 9 4 * 1 = 4 4 * 2 = 8 4 * 3 = 1 ...
- C#统计给定的文本中字符出现的次数,使用循环和递归两种方法
前几天看了一个.net程序员面试题目,题目是”统计给定的文本中字符出现的次数,使用循环和递归两种方法“. 下面是我对这个题目的解法: 1.使用循环: /// <summary> /// 使 ...
- 关于js回调方法 js递归时使用方法
js中递归调用本身可以这样: function a1(n){ a1(n)}但是如果需要在参数n进行自增的情况下判断会出错: function a1(n){ if(n>10) return 'aa ...
- PHP实现数组递归转义的方法
本文以实例形式讲述了PHP实现数组递归转义的方法,分享给大家供大家参考之用.具体方法如下: 主要功能代码如下: $arr = array('a"aa',array("c'd&quo ...
- javaScript 对象的hasOwnProperty方法打印window自定义属性
for (var name in window) { if (window.hasOwnProperty(name)) { window.console.log ( name + " : & ...
- [Python] For 嵌套循环打印图形 nested loop-练习题答案
前一篇:[Python] For 嵌套循环打印图形 nested loop-练习题 [python的for循环嵌套打印如下图形] 图形一: 输出结果: ******* ******* ******* ...
- [Python] For 嵌套循环打印图形 nested loop - 练习题
[python的for循环嵌套打印如下图形] 图形一: ******* ******* ******* ******* 图形二: * *** ***** ******* 图形三: * *** **** ...
随机推荐
- django 运行不同的settings
python manage.py runserver --settings=EMCRP.settings_local
- js 去html 标签
var stylereg = /style\=".+?"/g //去style样式 var alltagreg = /<[^>]*>/g //去除全部标签 var ...
- keepalive脑裂的处理,从节点发现访问的虚拟IP就报警,同时尝试发送内容到主节点服务器关闭keepalive和nginx,或者关机
解决keepalived脑裂问题 检测思路:正常情况下keepalived的VIP地址是在主节点上的,如果在从节点发现了VIP,就设置报警信息 脚本如下: 1 2 3 4 5 6 7 8 9 10 ...
- thinkphp 集成 twig模版引擎
下载地址:https://github.com/fucongcong/ThinkPHPLevel/archive/master.zip 控制器格式为: <?php namespace Home\ ...
- 【MySql】脚本备份数据库
#!/bin/bash #this is a script of mysql backup #Mysql="mysql" #MysqlDump="mysqldump&qu ...
- 越大优先级越高,优先级越高被OS选中的可能性就越大
进程的休眠:Thread sleep(1000);//括号中以毫秒为单位 当main()运行完毕,即使在结束时时间片还没有用完,CPU也放弃此时间片,继续运行其他程序. Try{Thread.slee ...
- javascript实现URL编码与解码
一.预备知识 URI是统一资源标识的意思,通常我们所说的URL只是URI的一种.典型URL的格式如下所示.下面提到的URL编码,实际上应该指的是URI编码. foo://example.com:804 ...
- JSON美化输出
echo '{"a": 1, "b": 2}' | python -m json.tool 转自: http://blog.csdn.net/chosen0ne ...
- WinError 5
IDE工具:pychrm 语言:python 在使用os模块修改路径名称时,总是会报 WinError 5 这个错误,就是拒绝访问,之前也遇见过,就是要操作的当前路径里有文件已经打开,代码不能再次访问 ...
- ios 从URL中截取所包含的参数,并且以字典的形式返回和参数字典转URL
//字典转链接(参数) - (NSString *)keyValueStringWithDict:(NSDictionary *)dict { if (dict == nil) { return ni ...