在解决this question时,我的代码似乎不适用于像100000这样的较大输入,但似乎适用于较小的输入。
以下是代码:
int main() {
/* Enter your code here. Read input from STDIN. Print output to STDOUT */
long long int n, h;
cin>>n;
long long int count=0;
long long int i,j;
long long int arr[n];
for(i=0;i<n;i++)
{
cin>>arr[i];
//cout<<arr[i]<<" ";
}
h = arr[0];
for(i=0;i<n;i++)
{
if (arr[i]>=h)
{
h=arr[i];
for(j=i;j<n;j++)
{ if (arr[j]<h)
count++;
}
}
}
cout<<(n-count);
//cout<<h;
return 0;
}
有人可以帮帮我吗?
答案 0 :(得分:2)
首先,VLA(arr[n]
)在C ++中是非标准的。其次,在支持它们的地方(例如,作为g ++中的语言扩展),它们通常存储在具有有限大小的堆栈中,因此您很可能遇到... 堆栈溢出。解决方案:使用适当的C ++容器(例如std::vector
)而不是VLA,例如改变:
long long int arr[n];
为:
std::vector<long long int> arr(n);
(不要忘记#include <vector>
)。