最开始计算每行的个数那里逻辑还不是很好,再想想。
要点:使用数组不方便,不如vector。
使用字符串打印字符,insert函数的使用。
#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
using namespace std;
int main(int argc, char *argv[])
{
vector<int> a;
a.push_back(1);
int num;
char sym;
cin>>num>>sym;
int i=1,sum=1,tmp=0,lastSum=0,res;
if(num<7)
{
cout<<sym<<endl;
cout<<num-1<<endl;
}
else
{
while(sum<num)
{
tmp = i*2+1;
sum = sum+tmp*2;
if(sum<=num)
{
lastSum = sum;
a.push_back(tmp);
}
i++;
}
//打印沙漏
int nullNum=0;
for(int j =a.size()-1;j>=0;j--)
{ string str;
if(nullNum!=0)
{
str.insert(0,nullNum,' ');
}
str.insert(nullNum++,a[j],sym);
cout<<str<<endl;
}
nullNum=nullNum-2;
for(int j =1;j<a.size();j++)
{ string str;
if(nullNum!=0)
{
str.insert(0,nullNum,' ');
}
str.insert(nullNum--,a[j],sym);
cout<<str<<endl;
}
res = num-lastSum;
if(res!=0)
{
cout<<res<<endl;
}
}
return 0;
}