帮忙改错(写一下)谢谢,c++基础题,递归数列画三角形。

img


帮忙改错(写一下)谢谢,c++基础题,递归数列画三角形。

#include <iostream>
using namespace std;
void drawTri(int n)
{
    if(n==0)
        return;
    drawTri(n-1);
    for(int i=0;i<n;i++)
        printf("*");
    printf("\n");
}


int main()
{
    int n;
    cin>>n;
    drawTri(n);
    return 0;
}

递推
如有帮助,望采纳

#include<iostream>
using namespace std;
const int N=105;
int n,map[N][N];
void DP()
{
    for(int i=2;i<=n;i++)
        for(int j=1;j<=i;j++)
            map[i][j] = max(map[i-1][j-1],map[i-1][j]) + map[i][j];
}
int maxValue()
{
    int max=map[n][1];
    for(int i=2;i<=n;i++)
        if(map[n][i]>max) max=map[n][i];
    return max;
}
int main()
{
    cin>>n;
    for(int i=1;i<=n;i++)
        for(int j=1;j<=i;j++)
            cin>>map[i][j];
    DP();
    cout<<maxValue()<<endl;
    return 0;
}



参考代码:

#include<bits/stdc++.h>
using namespace std;
char p[2500][2500];

void Draw(int n,int x,int y){
    if(n==0){
        p[x][y+1]='*';
        p[x+1][y]='*';
        p[x+1][y+2]='*';
        return;
    }
    Draw(n-1,x,y+(1<<n));//不断调用这个y一直向后移就得到开头的了
    Draw(n-1,x+(1<<n),y);
    Draw(n-1,x+(1<<n),y+(1<<(n+1)));
}

int main(){
    int t;
    cin>>t;
    while(t--){
        int n;
        cin>>n;
        memset(p,' ',sizeof(p));
        Draw(n,0,0);
        for(int i=0;i<(1<<(n+1));i++)
            for(int j=2500-1;p[i][j]==' ';p[i][j]='\0',j--);
        for(int i=0;i<(1<<(n+1));i++)
            printf("%s\n",p[i]);
    }

    return 0;
}