weike


私信TA

用户名:weike

访问量:2002

签 名:

等  级
排  名 14155
经  验 892
参赛次数 0
文章发表 17
年  龄 0
在职情况 学生
学  校 佛山科学技术学院
专  业

  自我简介:

题目


思路


代码

#include <stdio.h>
#include <stdlib.h>

void show(char* buf, int w){
    int i,j;
    for(i=0; i<w; i++){
        for(j=0; j<w; j++){
            printf("%c", buf[i*w+j]==0? ' ' : 'o');
        }
        printf("\n");
    }
}

void draw(char* buf, int w, int x, int y, int size){
    //递归出口
    if(size==1){
        buf[y*w+x] = 1;
        return;
    }
    
    int n = size / 3 ; //填空
    draw(buf, w, x, y, n);
    draw(buf, w, x-n, y ,n);
    draw(buf, w, x+n, y ,n);
    draw(buf, w, x, y-n ,n);
    draw(buf, w, x, y+n ,n);
}

int main()
{
    int N ;
        scanf("%d",&N);
    int t = 1;
    int i;
    for(i=0; i<N; i++) t *= 3;
    
    char* buf = (char*)malloc(t*t);
    for(i=0; i<t*t; i++) buf[i] = 0;
    //通过迭代进行圆圈标记,中心点进行递归(同时可以左上角进行递归)
    draw(buf, t, t/2, t/2, t);
    show(buf, t);
    free(buf);
    
    return 0;
}


 

0.0分

0 人评分

  评论区

  • «
  • »