#include <iostream>
#include <vector>
using namespace std;
string Add(string s1,string s2)
{
string my_str1(s1.rbegin(),s1.rend());
string my_str2(s2.rbegin(),s2.rend());
int len1 = my_str1.size();
int len2 = my_str2.size();
int flags = 0;
string s;
int i = 0;
int j = 0;
while (flags != 0 || i < len1 || j < len2)
{
char ch1 = my_str1[i];
char ch2 = my_str2[j];
if (i >= len1)
{
ch1 = '0';
}
if (j >= len2)
{
ch2 = '0';
}
if (ch1 - '0' + ch2 - '0' + flags-10>=0)
{
s += (ch1-'0' + ch2 - '0'-10+flags+'0');
flags = 1;
}
else
{
s += flags + ch1 + ch2 - '0';
flags = 0;
}
i++;
j++;
}
return string(s.rbegin(),s.rend());
}
int main()
{
int n;
while (cin >> n&&n!=0)
{
vector<string> vtr((n+1)*n/2);
int k = 0;
for (int i = 0; i < n; i++)
{
vtr[k] = "1";
vtr[k + i] = "1";
int m = i-2;
int j = k + 1;
while (m>=0)
{
m--;
//arr[j] = arr[j / 2 - 1]+arr[j/2];好吧,以前就犯过这个错误,这不是完全二叉树。
vtr[j] = Add(vtr[j - i - 1],vtr[j - i]);
j++;
}
k = k + i + 1;
}
k = 0;
for (int i = 0; i < n; i++)
{
for (int j = 0; j <= i; j++)
{
cout << vtr[k++].c_str() << " ";
}
cout << endl;
cout << endl;
}
}
return 0;
}
算法题:杨辉三角打印
最新推荐文章于 2022-02-05 16:59:41 发布
2093

被折叠的 条评论
为什么被折叠?



