私は Big O 記法を学ぼうとしていますが、この C++ コードで少し混乱しています:
void enterElements(int *s1, int s1Size)
{
for(int x = 0;x < s1Size;++x)
{
retry:
cout<<"Element "<<x + 1<<": ";
cin>>s1[x];
int valid = validation();
if(valid == 1)
{
cout<<"The input must be numbers."<<endl;
goto retry;
}
}
}
うまくやる方法がわからないので、3つの結果が得られました。
- 9n + 1 -> O(n)
- 7nm + 2m + 2n + 1 -> O(nm)
- 7n^2 + 4n + 1 -> O(n^2)
それらのどれかが正しいですか?そうでない場合は、正しい答えを見つけるのを手伝ってもらえますか?
int validation()
{
int validation = 0;
if(cin.fail())
{
validation = 1;
cin.clear();
cin.ignore(std::numeric_limits<std::streamsize>::max(),'\n');
}
else
validation = 0;
return validation;
}