c++ - C/C++ 拼图 : To print values from 1. .15 15..1 带有一个 for 循环

标签 c++ c puzzle

<分区>

这是我同事给的,打印值 1 2 3 4 .... 15 15 ..... 4 3 2 1 只有 一个 for 循环没有函数没有 goto 语句没有使用任何条件语句或三元运算符

所以我使用类型转换来解决它,但这不是一个精确的解决方案,因为 15 没有被打印两次。

int main()
{
    int i, j;
    for(i = 1, j = 0;j < 29;j++, i += int(j/15)*-2 + 1)
        cout<<i<<endl;
}

输出:1 2 3 4 ... 15 14 13 .... 2 1

任何替代解决方案?

最佳答案

您可以从 1 循环到 30,然后使用以下事实:(i/16) 对于您的上升部分为“0”,对于您的下降部分为“1”。

for (int i = 1; i < 31; i++)
{
    int number = (1-i/16) * i + (i/16) * (31 - i);
    printf("%d ", number);
}

关于c++ - C/C++ 拼图 : To print values from 1. .15 15..1 带有一个 for 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10105229/

相关文章:

c++ - Python 等效于 std::set 和 std::multimap

c - 多个 0 长度数组具有相同的地址?

algorithm - 支持快速下一个高元素和下一个低元素的数据结构是什么?

algorithm - 过桥拼图

c++ - 运算符 == 标记为 'override' ,但不覆盖

c++ - 为什么 unique_ptr<T> 不能从 T* 构造?

c - 为什么我们需要取消映射才能使PE文件有效?

algorithm - 选择代表数字谜题的独特集合

c++ - 错误 : macro names must be identifiers using #ifdef 0

c - 在 pic18f2550 中运行 DES