题解
输出一行字符
1 条题解
-
0
解题思路
我们要把两个字符交替着输出,一共输出 n 个字符。比如 n=8,两个字符是 @ 和 #,就输出 @#@#@#@#。
可以这样想:把要输出的位置从 0 开始编号:
- 位置 0、2、4、6……(偶数位置)输出第一个字符 @;
- 位置 1、3、5、7……(奇数位置)输出第二个字符 #。
怎么判断一个位置是奇数还是偶数呢?用取模运算:位置 % 2。如果等于 0,就是偶数;等于 1,就是奇数。
题目要求把"交替输出"这件事写成一个函数
one(...),每次调用它输出一整行,这样主程序就很干净了。打个比方:就像排队报数,报"1"的小朋友举左手,报"2"的小朋友举右手,交替进行,一个接一个,整齐又好看!
参考代码
// P4604 输出一行字符:把两个字符交替输出,一共输出n个字符 #include <iostream> using namespace std; // 自定义one函数:在一行里交替输出字符c1、c2,一共n个 void one(char c1, char c2, int n) { for (int i = 0; i < n; i++) { if (i % 2 == 0) cout << c1; // 第0、2、4...个字符输出c1 else cout << c2; // 第1、3、5...个字符输出c2 } cout << endl; } int main() { int n; char c1, c2; cin >> n >> c1 >> c2; // 输入总个数和两个字符 one(c1, c2, n); return 0; }复杂度分析
- 一共要输出 n 个字符,循环执行 n 次,所以时间复杂度是 O(n)。
- 我们只用了几个简单的变量,空间复杂度是 O(1)。
n 最大只有 100,输出100个字符对程序来说轻轻松松!
- 1