用户:
青柠檬_肉乎乎的兔子查看:3 回复:1 评论:3 创建时间:2020-09-06T16:02:22
我学C++三级,老师布置了一道编程题不会做,在线等大神指点
分形
题目描述
分形是在某种技术意义上在所有尺度上显示自相似性的对象或数量。
物体不需要在所有尺度上都具有完全相同的结构, 但是相同的“类型”结构必须出现在所有尺度上。
X 型分形定义如下:
1 级的 X 型分形是:
X
2 级的 X 型分形是:
X X
X
X X
如果使用B(n - 1)来表示n - 1的 X 型分形,那么递归地定义n级的盒子分形如下 :
B(n - 1) B(n - 1)
B(n - 1)
B(n - 1) B(n - 1)
你的任务是绘制一个n级的 X 型分形。
输入描述
输入共 1 行 输入一个 n ( 1<= n <= 4)
输出描述
对于每个测试用例,使用“X”表示法输出X型分形。注意“X”是大写字母。
输入样例#
2
输出样例#
X X X X X
就是这道,不知道有没有人会做
#include <iostream>
#include <cmath>
using namespace std;
char pictrue[1000][1000]={0};
void print(int n,int x,int y)
{
if(n==1)// 当规模为1是 打印'X’
{
pictrue[x][y]='X';
}
else//按照上图已给出算法分别打印该图形的五个部分 每个图形打印的实现调用自身函数用递归实现
{
int k=pow(3,n-2);
print(n-1,x,y); //左上方的n-1度盒分形
print(n-1,x+2*k,y); //右上方的n-1度盒分形
print(n-1,x+k,y+k); //中间的n-1度盒分形
print(n-1,x,y+2*k); //左下方的n-1度盒分形
print(n-1,x+2*k,y+2*k); //右下方的n-1度盒分形
}
}
int main()
{
int n;
cin>>n;
int k=pow(3,n-1);//k为所求字符数组的长度
for(int i=0;i<k;i++)
for(int j=0;j<k;j++)
pictrue[i][j]=' '; //将该字符数组全部置为空格
print(n,0,0);//传入函数中
for(int i=0;i<k;i++) //打印
{
for(int j=0;j<k;j++)
{
cout<<pictrue[i][j];
}
}
return 0;
}点赞0
评论