最优代码二进制案例

时间:2015-01-01 23:03:44

标签: c++

我想从我的代码中获取此输出:

0
10
110
1110
11110
111110

但我得到的是

0
10
109
1110
11109

到目前为止,这是我的代码:

void optimal(int arrsize) {
  int j;
  int code = 0;
  cout << '0' << endl;
  for (int i = 1; i < arrsize; i++) {
    j = i;
    while (j > 0) {
      code += pow(10, j);
      j--;
    }
    cout << code << endl;
    code = 0;
  }
}

2 个答案:

答案 0 :(得分:4)

您的代码通过非常昂贵的pow()调用浪费资源。您可以通过以下方式以最佳方式获得相同的结果:

void optimal(int arrsize)
{
    cout<<'0'<<endl;
    for (int i = 1; i < arrsize ; i++)
    {
        for (int j = 1; j < i ; j++)
        {
            cout<<'1';
        }
        cout<<'0'<<endl;
    }
}

答案 1 :(得分:2)

pow是一个浮点函数,然后你有舍入错误......

你可以将你的功能重写为:

void optimal(int arrsize)
{
    cout << '0' <<endl;
    int code = 0;
    for (int i = 0; i < arrsize ; i++)
    {
        ++code;
        code *= 10;
        cout<< code << endl;
    }
}

live example