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循环嵌套打印如下图形] 图形一: ******* ******* ******* ******* 图形二: * *** ***** ******* 图形三: * *** **** ...
随机推荐
- eclipse生成export生成jar详解
使用eclipse打jar包可能还有很多人不是很了解,今天特意测试整理一番. 打jar包有3种形式 JAR file JAR Javadoc ja ...
- QT在CT上的安装及运行
http://www.cubie.cc/forum.php?mod=viewthread&tid=2662&highlight=qt
- hdu6153 扩展kmp求一个字符串的后缀在另一个字符串出现的次数。
/** 题目:hdu6153 链接:http://acm.hdu.edu.cn/showproblem.php?pid=6153 题意:给定两个串,求其中一个串t的每个后缀在另一个串s中出现的次数乘以 ...
- Maple重点知识总结
Maple中的evalf与evalhf evalf 可作用于单值 可作用于List 可作用于Set 可作用于Vector(<..>) 可作用于Matrix(<..|..|..> ...
- keepalived管理LVS文件详解
#全局设置,只设置一个 全局路由就可以,全局路由不能重复唯一标识. global_defs { router_id LVS_01 #全局路由ID,唯一不能重复 } #实例 vrrp_instance ...
- CMake Error at cmake/boost.cmake:76 (MESSAGE):
编译mysql5.7.9的时候报错 CMake Error at cmake/boost.cmake:76 (MESSAGE): You can download it with -DDOWNLOAD ...
- javascript父、子页面交互小结
帧用来存放子页面,既可以是iframe,又可以是frameset.window对象是全局对象,页面上的一切函数和对象都在它的作用域里. 1.parent代表父窗口.如果父窗口又存在若干层嵌套, ...
- 数据库 proc编程五
#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> #include <stri ...
- Softmax回归推导过程
http://www.cnblogs.com/Deep-Learning/p/7073744.html http://www.cnblogs.com/lutingting/p/4768882.html ...
- Mongodb的性能优化问题
摘要 数据库性能对软件整体性能有着至关重要的影响,对于Mongodb数据库常用的性能优化方法主要有: 范式化与反范式化: 填充因子的使用: 索引的使用: 一. 范式化与反范式化 范式是为了消除重复数据 ...