最佳代码二进制情况

Optimal code binary case

我正在尝试从我的代码中获取此输出:

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;
  }
}

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

您的代码正在通过非常昂贵的 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;
    }
}