问题标题: 1041: 【入门】打印星号三角行

0
0

0
已采纳
赵逸凡
赵逸凡
初级启示者
初级启示者

这题目...有点看不懂,最好发下网址

它为什么打印三个三角形?是提示吗?

这应该是用递归做的

每一个*号按奇数来看的,一个三角形一个三角形来看,可以按每一个三角形的最大宽度值是n,然后,定义三个字符二维数组,每个数组有n行,如果从1开始的话,a[n][1]必须是星号,以此递归,a[n][j]的每一个元素都是*号,此时递归的同时将星号复制到a[n][bfs(n)*3](因为打印三个三角形),确定a[n][j]都是星号,bfs搜索函数里面写f[1]=1,f[2]=3,f[3]=5,按1,3,5,7,9的方式推出bfs(n)的值,最好long long int范围,递归第i-1行时(i初值n)用a[n][j]的值来推,此时再定义一个dfs变量,到n-1行的时候就赋值为1,a[i][dfs]=空格,继续i--,到a[n-2][j]行的时候会出现第一个元素是空格,所以我们还要看dfs变量,a[i][dfs]=空格的时候就dfs--,一直待到dfs=0的时候退出while循环,递归到第1行的时候可能出现问题,所以a[1][1]到a[n][bfs(n)*3]的地方最好全部赋值为空元素或指定元素。最好输出a[n][bfs(n)*3]的每个元素就可以了。

打字不易,望采纳谢谢

0
0
郑凝溪
郑凝溪
初级光能
初级光能

直接输出!!!!!!

望采纳

0
桑烁
桑烁
高级光能
高级光能

用循环做

(主循环每次减少一行空格,副循环(输出)(循环次数每次加2),换行)(主循环次数是输入的n)

eg:int a=1;

for(int i=0;i<n;i++)
{

for(..........)(输出空格的)

for(int j=0;j<a;j++)

{

输出

a+=2;
}

换行
}

上述代码有省略(只供参考)

0
0
我要回答