题目:http://poj.org/problem?id=3768
题意:分形图,用C++就过了,实在不想看了
#include<stdio.h>
#include<string.h>
#include<math.h>
int m;
char mp[3005][3005],mo[6][6];
int quick_pow(int x, int n){ //快速幂
int ans=1;
while(n){
if(n&1){
ans=ans*x;
}
x=x*x;
n>>=1;
}
return ans;
}
void dfs(int n,int x,int y){
if(n==1){
for(int i=x;i<x+m;i++)
for(int j=y;j<y+m;j++)
mp[i][j]=mo[i-x][j-y];
return ;
}
int size=quick_pow(m,n-2);
for(int i=0;i<m;i++)
for(int j=0;j<m;j++)
if(mo[i][j]!=' ')
dfs(n-1,x+size*i*m,y+size*j*m);
}
int main(){
int n,size;
while(scanf("%d",&m)&&m){
memset(mp,' ',sizeof(mp));
getchar();
for(int i=0;i<m;i++)
gets(mo[i]);
scanf("%d",&n);
size=quick_pow(m,n);
dfs(n,0,0);
for(int i=0;i<size;i++){
mp[i][size]='\0';
printf("%s\n",mp[i]);
}
}
return 0;
}
本文介绍了一种使用C++实现的分形图绘制算法。通过快速幂运算和递归深度优先搜索来高效生成复杂的分形图案。适用于初学者了解递归和图形绘制的基本原理。
603

被折叠的 条评论
为什么被折叠?



