POJ2083-Fractal【分形,分治】
生活随笔
收集整理的這篇文章主要介紹了
POJ2083-Fractal【分形,分治】
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
正題
題目鏈接:http://poj.org/problem?id=2083
大意
圖形:
一級:
XX
二級:
X XX X
???XX
X???XXX
三級:
X???X?????????X???XXXXX
???X???????????????X???XX
X???X?????????X???XXXXX
?????????X???X?????????XX
????????????X????????????X
?????????X???X?????????XX
X???X?????????X???XXXXX
???X???????????????X???XX
X???X?????????X???XXXXX
然后以此類推
解題思路
我們可以發現每一級的左上角和上一級一樣,所以可以用一個遞歸處理好7級的圖形,然后每次根據輸入輸出一部分。
code
#include<cstdio> using namespace std; char map[731][731]; int n,f[8]; void dg(int n,int x,int y)//遞歸 {if (n==0) map[x][y]='X';//寫入else{dg(n-1,x,y);dg(n-1,x+f[n-1]*2,y);dg(n-1,x,y+f[n-1]*2);dg(n-1,x+f[n-1],y+f[n-1]);dg(n-1,x+f[n-1]*2,y+f[n-1]*2);//繪制} } int main() {f[0]=1;for (int i=1;i<=7;i++)f[i]=f[i-1]*3;dg(6,0,0);//初始圖形while(1){scanf("%d",&n);if(n==-1) return 0;n-=1;for (int i=0;i<f[n];i++){for (int j=0;j<f[n];j++)if (map[i][j]==map[730][730]) printf(" ");//特別判斷,字符數組初始空格不是正??崭?/span>else printf("%c",map[i][j]);//輸出printf("\n");}printf("-\n");} }總結
以上是生活随笔為你收集整理的POJ2083-Fractal【分形,分治】的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 广电wifi怎么修改密码如何更换路由器密
- 下一篇: 自定义一个监控自定义一个监控系统