猫史档案馆


在线求大神解答C++分治程序题

用户:青柠檬_肉乎乎的兔子青柠檬_肉乎乎的兔子查看: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



就是这道,不知道有没有人会做emotion_伤心


回复

上一页1 页 / 共 1下一页
ZH-Y-QZH-Y-Q

#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


评论