Lv.1
来自ZJ的初中OIer
签名:slogan更新不了了,不更新了
在 在线求大神解答C++分治程序题 中回复
#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;
}2020-09-06T16:07:18 点赞:0