大宇私人领地伊甸园丨宁愿做了后悔,也不要错过后悔[www.mrdayu.com]
注册

24小时联系邮箱:[email protected]

编程人生
大宇私人伊甸园: 首页 > 编程人生 > C/C++语言 > [C/C++]Sierpinski triangle(谢尔宾斯基三角形)C++源码

[C/C++]Sierpinski triangle(谢尔宾斯基三角形)C++源码

发布时间:2018/01/03 C/C++语言 开源代码 标签Sierpinski triangle谢尔宾斯基三角形阅读:406

源码:

#include <stdio.h>  
#include <stdlib.h>  
  
#define LEN 70  //数组宽/高  
  
int SIZE=5; //递归次数  
  
char arr[LEN][LEN]; //定义二维数组  
  
void chu(){ //初始化  
    int j;  
    int j_=SIZE-1;  
    int p=3;  
    for(j=0;j<j_;j++){  
        p*=2;  
    }  
    SIZE=p;  
    int i;  
    for(i=0;i<LEN;i++){  
        int j;  
        for(j=0;j<LEN;j++){  
            arr[i][j]=' ';  
        }  
    }  
}  
void hua(){ //打印  
    int i;  
    for(i=0;i<LEN;i++){  
        int j;  
        for(j=0;j<LEN;j++){  
            printf("%c",arr[i][j]);  
        }  
        printf("\n");  
    }  
}  
  
//递归 每次将大三角形分成三个小三角形,将小三角形继续分,直到变为最小为止  
void digui(int i_1,int j_1,int i_2,int j_2,int i_3,int j_3){      
    if(i_2-i_1==3){  
        arr[i_1][j_1]='*';  
        arr[i_1+1][j_1-1]='*'; arr[i_1+1][j_1+1]='*';  
        arr[i_2-1][j_2+1]='*'; arr[i_2-1][j_2+3]='*'; arr[i_3-1][j_3-1]='*';  
    }else{  
        digui(i_1,j_1,i_1+(i_2-i_1)/2,j_2+(j_1-j_2)/2,i_1+(i_3-i_1)/2,j_3-(j_3-j_1)/2);  
        digui(i_2-(i_2-i_1)/2,j_2+(j_3-j_1)/2,i_2,j_2,i_3,j_2+(j_3-j_2)/2);  
        digui(i_1+(i_3-i_1)/2,j_1+(j_3-j_1)/2,i_3,j_2+(j_3-j_2)/2,i_3,j_3);  
    }  
}  
void xing_a(int i,int j){   //小三角形  
    arr[i][j]='*';  
    arr[i+1][j-1]='*';  
    arr[i+1][j+1]='*';  
    arr[i+2][j-2]='*';  
    arr[i+2][j]='*';  
    arr[i+2][j+2]='*';  
}  
int main(int argc, char *argv[]) {  
    chu();  
    digui(0,SIZE,SIZE,0,SIZE,SIZE*2);  
    hua();  
    return 0;  
}  

The bottom line, for me, is simple.

Let’s hope it doesn’t take 500 years for a discipline of testing to becomes the standard for software developers.

From:dayu

您好!请登录

合作网站快捷登录:
点击取消回复

已有0评论

    大宇博客

    点击这里给我发消息点击这里给我发消息