#include <iostream>
#include <string>
#include <vector>
using namespace std;
vector<string> f(int x)
{
// 边界情况
if (x == 1)
return { " /\\", "/__\\" };
// 取上一级的图形
auto pattern = f(x - 1);
// 拷贝成上下两份
pattern.insert(pattern.end(), pattern.begin(), pattern.end());
// 为上一半左侧增加锁进
string indent(pattern.back().size() >> 1, ' ');
for (int i = 0, e = pattern.size() >> 1; i < e; ++i)
pattern[i] = indent + pattern[i];
// 为下一半添加右侧图形
for (int i = pattern.size() >> 1, e = pattern.size(); i < e; ++i)
pattern[i] = pattern[i] + string(e - i - 1, ' ') + pattern[i];
return pattern;
}
int main()
{
ios::sync_with_stdio(false);
cin.tie(nullptr);
cout.tie(nullptr);
int n;
cin >> n;
for (const auto& i : f(n))
cout << i << '\n';
return 0;
}
在本地运行似乎没有问题,但是在洛谷在线IDE与洛谷评测环境下WA。
请问各位大佬代码有什么错误?谢谢!