问题链接:http://acm.hdu.edu.cn/showproblem.php?pid=2091
问题分析:由图形规律,在高为n的空心三角形中,从第一行到第i行(i<n),字符都是关于j=n对称的(j表示每行的的j个),且左边的满足i+j=n+1,右边的满足j-i=n-1.因为题目要求每行末无空格,从每行的第一个到n+i-1个,满足条件的用字符填充,其余用空格填充;最后一行全部用字符填充。
AC通过的代码如下:
#include<iostream>
using namespace std;
int main()
{
int n,i,j,s=0;
char m;
while (cin >> m &&m!='@')
{
cin >> n;
s++;
if (s != 1)cout << endl;
for (i = 1; i <= n; i++)
{
for (j = 1; j <= n+i-1; j++)
{
if (i + j == n + 1 || j - i == n - 1 || i == n)
cout << m;
else
cout << " ";
}
cout << endl;
}
}
return 0;
}