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