此贴结!!!!!!

  1. 分形
    题目ID:20635必做题100分
    最新提交:
    Runtime Error
    30 分
    历史最高:
    Runtime Error
    30 分

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

题目描述

分形,具有以非整数维形式充填空间的形态特征。
通常被定义为“一个粗糙或零碎的几何形状,可以分成数个部分,且每一部分都(至少近似地)是整体缩小后的形状”,即具有自相似的性质。
现在,定义“盒子分形”如下:
一级盒子分形:
X
二级盒子分形:
X X
X
X X
如果用B(n−1)B(n−1)代表第n−1n−1级盒子分形,那么第nn级盒子分形即为:
B(n - 1) B(n - 1)
B(n - 1)
B(n - 1) B(n - 1)
你的任务是绘制一个nn级的盒子分形。
输入格式

输入包含几个测试用例。
输入的每一行包含一个不大于77的正整数nn,代表要输出的盒子分形的等级。
输入的最后一行为nn,代表输入结束。
输出格式

对于每个测试用例,使用 X 符号输出对应等级的盒子分形。
请注意 X 是一个大写字母。
每个测试用例后输出一个独立一行的短划线。
样例
Input 1

1
2
3
4
-1

Output 1

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
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 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 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
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 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 X X X X X X

代码:

#include<bits/stdc++.h>
using namespace std;
int n;
char a[1005][1005];
void f(int x,int y,int nn){
	if(nn==0){
		a[x][y]='X';
		return;
	}
	else{
		int k=pow(3,nn-1);
		f(x+2*k,y,nn-1);
		f(x,y+2*k,nn-1);
		f(x+k,y+k,nn-1);
		f(x,y,nn-1);
		f(x+2*k,y+2*k,nn-1);
	}
}

int main(){
	while(1){
		scanf("%d",&n);
		if(n==-1){
			return 0;
		}
		int n_3=pow(3,n-1);
		for(int i=0;i<=n_3;i++){
			for(int j=0;j<=n_3;j++){
				a[i][j]=' ';
			}
		}
		f(1,1,n);
		for(int i=1;i<=n_3;i++){
			for(int j=1;j<=n_3;j++){
				cout<<a[i][j];
			}
			cout<<endl;
		}
		cout<<"-"<<endl;
	}
	return 0;
}
/*
2 2   1
  2 1 1
4 4 3
4   3 3
*/

由于某种原因,这道题没有解决方案

好像是7会RE

可能是数组大小问题

改成3005就好


点这里