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循环嵌套打印如下图形] 图形一: ******* ******* ******* ******* 图形二: * *** ***** ******* 图形三: * *** **** ...
随机推荐
- Redis-stat is not found
$ruby -v ruby 2.1.3p242 (2014-09-19 revision 47630) [x86_64-linux] $gem -v 2.2.2 $which ruby /usr/lo ...
- MongoDB助力快速搭建物流订单系统
简介 快递物流系统里最常见的一种业务类型就是订单的查询和记录.订单的特点是随着递送过程,订单数据需要随时更新路径.数据结构上需要可以灵活应对,这点非常符合Document模型,并且MongoDB支持G ...
- 动态加载javascript增强版
我们经常使用动态加载Javascript,写个函数很容易现实,之前也写过一个函数,不过当加载多个JS时,只能根据浏览器返回的顺序来先后加载,这肯定不是我们想要的,现在使用了一下技巧,当加载多个JS时, ...
- [JS] 页面回车键提交表单-常用于登录页面
//判断是否按下了回车键 var EnterSubmit = function(evt){ evt= window.event || evt; if (evt.keyCode == 13){ //若按 ...
- 第二百六十七节,Tornado框架-分页封装模块
Tornado框架-分页封装模块 框架引擎 #!/usr/bin/env python #coding:utf-8 import tornado.ioloop import tornado.web # ...
- 异常之*** buffer overflow detected ***
*** buffer overflow detected *** 是sprintf()超出buff大小
- PHP curl_setopt函数用法介绍中篇
此篇已实例为主. 一.一般的实例 demo1.php <?php $user = "admin123"; $pass = "admin456"; // $ ...
- 实例讲解JQuery中this和$(this)区别
这篇文章主要介绍了实例讲解JQuery中this和$(this)的区别,this表示当前的上下文对象是一个html对象,可以调用html对象所拥有的属性和方法,$(this),代表的上下文对象是一个j ...
- php 将一个字符串分割为组成它的字符
问: php里如何将一个字符串分割为组成它的字符? 比如hello -> [h, e, l, l, o] 以下有三种方法: 这是需要被分割的字符串: $str = 'Hello小样'; ...
- Qt slot中获取sender
调用sender();函数 例如获取一个QRadioButton QRadioButton *rb = qobject_cast<QRadioButton *>(sender());