陈娅琦
(༄༊࿆心若不动,风又奈何ด้้้้้็้้้็็็็็้้้้้็็็็็้༺)
2024 年8 月 20 日 01:34
1
分型盒
题目ID:9436选做题100分
最新提交:
0 分
历史最高:
0 分
时间限制: 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
姜一墨
(Time Limit Exceeded)
2024 年8 月 20 日 01:55
2
这道题可以将维度是1的分形盒存下来,向右、下、右下三个方向复制。
2 个赞
姜一墨
(Time Limit Exceeded)
2024 年8 月 20 日 01:58
4
这就是递归的核心代码
void dfs(int x,int y,int s)
{
if(s==1)
{
a[x][y]='x';
return;
}
int t=pow(3,s-2);
dfs(x,y,s-1);
dfs(x+t,y+t,s-1);
dfs(x+t+t,y,s-1);
dfs(x,y+t+t,s-1);
dfs(x+t+t,y+t+t,s-1);
}
2 个赞
陈娅琦
(༄༊࿆心若不动,风又奈何ด้้้้้็้้้็็็็็้้้้้็็็็็้༺)
2024 年8 月 20 日 03:14
13
@姜一墨
原来是1,1,n,我刚才写的是dfs(0,0,n)。
陈娅琦
(༄༊࿆心若不动,风又奈何ด้้้้้็้้้็็็็็้้้้้็็็็็้༺)
2024 年8 月 20 日 03:19
15
#include<bits/stdc++.h>
using namespace std;
char a[1005][1005];
void dfs(int x,int y,int s){
if(s==1){
a[x][y]='x';
return;
}
int t=pow(3,s-2);
dfs(x,y,s-1);
dfs(x+t,y+t,s-1);
dfs(x+t+t,y,s-1);
dfs(x,y+t+t,s-1);
dfs(x+t+t,y+t+t,s-1);
}
int main(){
memset(a,' ',sizeof a);
int n;
cin>>n;
dfs(1,1,n);
for(int i=1;i<=(n-1)*3;i++){
for(int j=1;j<=(n-1)*3;j++){
cout<<a[i][j];
}
cout<<endl;
}
return 0;
}
好像不大对,能帮我看一下吗?
姜一墨
(Time Limit Exceeded)
2024 年8 月 20 日 03:22
16
最后输出的循环i和j都应该是<=pow(3,n-1)
也就是3的n-1次方
1 个赞