我又来问问题了

  1. 分型盒
    XJOI - 题目ID:9436必做题100分
    最新提交:
    Memory Limit Exceeded
    20 分
    历史最高:
    Memory Limit Exceeded
    20 分

    时间限制: 1000ms
    空间限制: 524288kB

题目描述

【题目描述】

分形,通常被定义为一个粗糙或零碎的几何形状,可以分成数个部分,且每一部分都(至少近似地)是整体缩小后的形状,即具有自相似的性质。它跟分数维、自组织、非线性系统和混沌等具有非常重要的联系。

分形盒就是这样一种分形,它的定义如下:
维度是1的分形盒:
x
维度是2的分形盒:
x x
x
x x
如果已知维度是(n-1)的分形盒,那么维度是n的分形盒的递归定义如下所示:
Box(n-1) Box(n-1)
Box(n-1)
Box(n-1) Box(n-1)
你的任务是画一个维度为n的分形盒。

【输入】

输入一行包含一个正整数n表示分形盒的维度,n不大于7。

【输出】

输出要求维度的分形盒,注意x为小写字母。

【样例输入】

3

【样例输出】

x x x x
x x
x x x x
x x
x
x x
x x x x
x x
x x x x
下面是我的代码:

#include<bits/stdc++.h>
using namespace std;
char a[10005][10005];
void f(int x,int y,int m){
	if(m==1){
		a[x ][y]='x';
		return ;
	}
	f(x+m/3*2,y,m/3*2);
	f(x,y+m/3*2,m/3*2);
	f(x+m/3*2,y+m/3*2,m/3*2);

}
int main(){
	int n;
	cin>>n;
	int size=pow(3,n-1);
	for(int i=1;i<=size;i++){
		for(int j=1;j<=size;j++){
			a[i][j]=0;
		}
	}
	f(1,1,size);
	for(int i=1;i<=size;i++){
		for(int j=1;j<=size;j++){
			cout<<a[i][j];
		}
		cout<<endl;
	}
	return 0;
}

哪位大佬帮忙看看啊 :sob: :sob: :sob: :sob: :sob: :sob: :sob: :sob: :sob: :sob:

4 个赞

给个格式化

3 个赞
#include<bits/stdc++.h>
using namespace std;
char mp[1050][1050];
int n;
void f(int, int, int);   //函数的声明
int main() {
	memset(mp,' ',sizeof mp);
	cin >> n;
	n = pow(3, n - 1);
	f(1, 1, n);
	for (int i = 1; i <= n; i++) {
		for (int j = 1; j <= n; j++) {
			cout << mp[i][j];
		}
		cout << endl;
	}
}
void f(int x, int y, int len) {  //函数的定义
	if (len == 1) {
		mp[x][y] = 'x';
		return;
	}
	len /= 3;
	f(x, y, len);   //左上
	f(x + len, y + len, len);  //中间
	f(x, y + 2 * len, len);  //右上
	f(x + 2*len, y, len);  //左下
	f(x + 2*len, y + 2*len, len);  //右下
}
5 个赞

可恶,每次刷到这种我会的问问题的帖子,总有人比我抢前一步!

3 个赞

下次让给你

3 个赞

6《下次丕定》

2 个赞

二月份的帖子别回了

1 个赞