酷代码 AI
菜单
服务商

输入一个正整数n(n<=8),输出相应的由星号组成的三角形图案。 当n=1时,输出如下图案: * 当n=2时,输出如下图案: ** * 当n=3时,输出如下图案: **** * * ** * 当n=4时,输出如下图案: ******** * * * * ** ** * * **** * * ** * 也就是说对于给定的n阶的图案,都是由三个n-1阶的图案组合而成,请根据样例找到规律,然后输出相应的图案。 输入 输入文件名为star.in 一行一个整数n。 输出 输出文件名为star.out 输出相应的递归三角形。 样例输入 复制 4 样例输出 复制 ******** * * * * ** ** * * **** * * ** * 内存限制:128MB

```cpp #include <iostream> #include <fstream> #include <vector> #include <cmath> using namespace std; // 递归生成图案 void generatePattern(vector<string>& pattern, int n) { if (n == 1) { pattern.push_back("*"); return; } // 生成 n-1 阶图案 vector<string> subPattern; generatePattern(subPattern, n - 1); int size = subPattern.size(); // 第一部分的 n-1 阶图案(左上) for (int i = 0; i < size; i++) { string line = subPattern[i] + string(pow(2, n - 2), ' ') + subPattern[i]; pattern.push_back(line); } // 第二部分的 n-1 阶图案(左下左) for (int i = 0; i < size; i++) { pattern.push_back(subPattern[i]); } // 第三部分的 n-1 阶图案(左下右) for (int i = 0; i < size; i++) { pattern.push_back(subPattern[i]); } } int main() { ifstream fin("star.in"); ofstream fout("star.out"); int n; fin >> n; vector<string> pattern; generatePattern(pattern, n); // 输出图案 for (const string& line : pattern) { fout << line << endl; } fin.close(); fout.close(); return 0; } ``` 代码解释: 1. 递归函数 `generatePattern` 生成 n 阶图案: - 当 n=1 时,图案为单个星号。 - 对于 n>1,先生成 n-1 阶图案,然后按规则组合。 2. 组合规则: - 第一部分:n-1 阶图案复制两份,中间用空格隔开。 - 第二部分:n-1 阶图案直接复制。 - 第三部分:n-1 阶图案再次复制。 3. 空格数量计算: - 中间空格数为 2^(n-2),符合题目给出的示例规律。 4. 输入输出: - 从 `star.in` 读取整数 n。 - 将生成的图案写入 `star.out`。 这个实现严格遵循题目描述的递归结构,能够正确生成指定阶数的三角形图案。 [2026-01-06 17:48:01 | AI问答 | 528点数解答]

相关提问
发财导航,免费问AI
实用工具查看更多