分形简单版

我的代码:

复制代码
#include<bits/stdc++.h>
using namespace std;
const int N=1000;
int n;
char s[N][N];
void work(int x)
{
    if(x==1) {
        s[0][0]='*';
        return;
    }
    work(x-1);
    for(int i=0;i<(1<<x-2);i++)
    for(int j=(1<<x-2);j<(1<<x-1);j++) s[i][j]=s[i][j-(1<<x-2)];
    for(int i=(1<<x-2);i<(1<<x-1);i++)
    for(int j=0;j<(1<<x-2);j++) s[i][j]=s[i-(1<<x-2)][j];
    for(int i=(1<<x-2);i<(1<<x-1);i++)
    for(int j=(1<<x-2);j<(1<<x-1);j++) s[i][j]=' ';
}
int main()
{
    scanf("%d",&n);
    work(n);
    for(int i=0;i<(1<<n-1);i++) 
    {
        int j=1<<n-1;
        j--;
        while(s[i][j]!='*') j--;
        for(int k=0;k<j;k++) printf("%c ",s[i][k]);
        printf("%c",s[i][j]);
        if(i!=(1<<n-1)-1) printf("\n");
    }
    return 0;
}

另一种实现思路

复制代码
#include <iostream>
using namespace std;
void draw_triangle(int n, int x, int y);
int main()
{
int n;
cin >> n;
for(int i=0; i<65; i++){
for(int j=0; j<65; j++){
grid[i][j] = ' ';
}
}
draw_triangle(n, 0, 0);
for(int i=0; i<sizes[n]; i++){
for(int j=0; j<sizes[n]-i; j++){
if(j+1==sizes[n]-i){
cout << grid[i][j] << endl;;
}else{
cout << grid[i][j] << " ";
}
}
}
return 0;
}

int sizes[] = {0, 1, 2, 4, 8, 16, 32, 64};
char grid[65][65];
void draw_triangle(int n, int x, int y){
if(n==1){
grid[x][y] = '*';
return;
}
draw_triangle(n-1, x, y);
draw_triangle(n-1, x+sizes[n-1], y);
draw_triangle(n-1, x, y+sizes[n-1]);
}

这两种思路都要会

相关推荐
BYSJMG几秒前
计算机毕设选题:基于Python+MySQL校园美食推荐系统【源码+文档+调试】
大数据·开发语言·python·mysql·django·课程设计·美食
Zz_waiting.5 分钟前
案例开发 - 日程管理 - 第七期
开发语言·前端·javascript·vue.js·html·路由
writeone6 分钟前
9-10关于JS初学产生的问题
开发语言·javascript·ecmascript
索迪迈科技1 小时前
Flink Task线程处理模型:Mailbox
java·大数据·开发语言·数据结构·算法·flink
元亓亓亓2 小时前
LeetCode热题100--230. 二叉搜索树中第 K 小的元素--中等
算法·leetcode·职场和发展
草莓熊Lotso2 小时前
《算法闯关指南:优选算法-双指针》--01移动零,02复写零
c语言·c++·经验分享·算法·leetcode
太阳的后裔2 小时前
随笔一些用C#封装的控件
开发语言·c#
tianyuanwo2 小时前
Rust语言组件RPM包编译原理与Cargo工具详解
开发语言·网络·rust·rpm
焜昱错眩..3 小时前
代码随想录算法训练营第三十九天|62.不同路径 63.不同路径ll
算法
ajassi20006 小时前
开源 C++ QT Widget 开发(十五)多媒体--音频播放
linux·c++·qt·开源