如何优化输出指定固定形状的C++代码并合并条件分支?
优化C++形状输出代码:合并冗余else if分支
先看你要输出的形状,原代码的多个else if其实围绕「x+y为特定偶数」的规律,我们可以把所有输出#的条件合并成一个表达式,去掉冗余分支。
优化后的代码
#include <iostream> using namespace std; int main() { for (int x = 1; x < 10; x++) { for (int y = 1; y < 6; y++) { // 合并所有输出#的条件 if (x == y || (x + y >= 4 && x + y <= 10 && (x + y) % 2 == 0 && (x + y == 10 || x > y))) { cout << "#"; } else { cout << "."; } } cout << endl; } return 0; }
思路解析
原代码的分支对应两种核心情况:
- 主对角线:
x == y,直接输出# - 一组反对角线:
x + y等于4、6、8、10,其中:- 当
x + y = 10时,不管x和y的大小关系都输出#(对应形状最右侧的对角线) - 当
x + y为4、6、8时,只有x > y时才输出#(对应形状内部的几条短对角线)
- 当
用统一表达式覆盖这些情况:
x + y >=4 && x + y <=10限定范围,包含4、6、8、10这几个目标值(x + y) % 2 ==0筛选出偶数,匹配目标值的特性(x + y ==10 || x > y)区分两种子情况:要么是最外层反对角线,要么是内部需要x大于y的短对角线
这样就把分散的else if分支合并到初始的if条件中,代码更简洁且逻辑清晰。
内容的提问来源于stack exchange,提问作者ann_txg
相关产品推荐
相关产品推荐

