我怎样才能结合代码
问题描述:
我写了一个程序,但是我觉得不好我用了两次代码。我怎样才能结合代码
有问题的地方就在这里:
if (2 * cell_price > large_cell_price) {
for (int i = 0; i < parquet.size(); ++i) {
for (int j = 0; j < parquet[i].size(); ++j) {
if (parquet[i][j] == '*') {
if (j + 1 < parquet[i].size() && parquet[i][j + 1] == '*') {
j++;
sum += large_cell_price;
} else {
sum += cell_price;
}
}
}
}
} else {
for (int i = 0; i < parquet.size(); ++i) {
for (int j = 0; j < parquet[i].size(); ++j) {
if (parquet[i][j] == '*') {
sum += cell_price;
}
}
}
}
我做循环两次:
for (int i = 0; i < parquet.size(); ++i) {
for (int j = 0; j < parquet[i].size(); ++j) {
我不能合并。我如何做到这一点?
答
试试这个代码:
for (int i = 0; i < parquet.size(); ++i) {
for (int j = 0; j < parquet[i].size(); ++j) {
if (parquet[i][j] == '*') {
if (j + 1 < parquet[i].size() &&
parquet[i][j + 1] == '*' &&
(2 * cell_price > large_cell_price)) {
j++;
sum += large_cell_price;
} else {
sum += cell_price;
}
}
}
}
答
最简单的方法可以是:
for (int i = 0; i < parquet.size(); ++i) {
for (int j = 0; j < parquet[i].size(); ++j) {
if (2 * cell_price > large_cell_price) {
if (parquet[i][j] == '*') {
if (j + 1 < parquet[i].size() && parquet[i][j + 1] == '*') {
j++;
sum += large_cell_price;
} else {
sum += cell_price;
}
}
} else {
if (parquet[i][j] == '*') {
sum += cell_price;
}
}
}
}
是不坏,如果我将检查'2 * cell_price> large_cell_price'每次迭代? – rel1x 2015-04-01 10:54:55
@ rel1x,它比两次运行'for'loop更好。 – Himanshu 2015-04-01 10:57:28
非常感谢你! – rel1x 2015-04-02 06:11:10