分形简单版

我的代码:

#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]);
}

这两种思路都要会

相关推荐
bst@微胖子1 小时前
Python高级语法之selenium
开发语言·python·selenium
Paddi9301 小时前
Codeforces Round 1004 (Div. 1) C. Bitwise Slides
c++·算法
王小义笔记1 小时前
Postman如何流畅使用DeepSeek
开发语言·测试工具·lua·postman·deepseek
Luis Li 的猫猫2 小时前
深度学习中的知识蒸馏
人工智能·经验分享·深度学习·学习·算法
查理零世2 小时前
【蓝桥杯集训·每日一题2025】 AcWing 6118. 蛋糕游戏 python
python·算法·蓝桥杯
敲代码的小王!2 小时前
MD5加密算法和BCrypt密码加密算法
java·算法·安全
带娃的IT创业者3 小时前
机器学习实战(6):支持向量机(SVM)——强大的非线性分类器
算法·机器学习·支持向量机
java1234_小锋3 小时前
一周学会Flask3 Python Web开发-request请求对象与url传参
开发语言·python·flask·flask3
流星白龙5 小时前
【C++】36.C++IO流
开发语言·c++
Java能学吗5 小时前
2.17学习总结
数据结构·学习