C++ 全局变量在c++;?
为了一个问题C++ 全局变量在c++;?,c++,C++,为了一个问题 当我在int()的内部提交声明的方法时,它显示了TLE,但是当声明在int()之上时,它在C++中被接受。 所以我的问题是,全局声明是否显著影响了编译速度,或者我遗漏了什么 以下是公认的: #include<bits/stdc++.h> using namespace std; int n,k,m,a=1,c=1; int main() { cin>>n>>m>>k; m -= n; while (m&g
当我在int()的内部提交声明的方法时,它显示了TLE,但是当声明在int()之上时,它在C++中被接受。 所以我的问题是,全局声明是否显著影响了编译速度,或者我遗漏了什么
以下是公认的:#include<bits/stdc++.h>
using namespace std;
int n,k,m,a=1,c=1;
int main()
{
cin>>n>>m>>k;
m -= n;
while (m>0){
if (k+a<=n) c++;
if (k-a>=1) c++;
m -=c;
a++;
}
cout<<a;
return 0;
}
#包括
使用名称空间std;
int n,k,m,a=1,c=1;
int main()
{
cin>>n>>m>>k;
m-=n;
而(m>0){
如果(k+a=1)C++;
m-=c;
a++;
}
coutn>>m>>k;
m-=n;
而(m>0){
如果(k+a=1)C++;
m-=c;
a++;
}
cout应该没有区别。如果你的样本量很小(你提交了两种解决方案一次或两次),也许您当时正处于超出时间限制的边缘,有时只是运气好而已。您担心全局变量可能会对编译时间产生影响,但是:DTLE用于执行。编译速度与此无关。此程序运行时使用了哪些优化?@cigien我相信online judge使用GCC with-O2.这可能是因为在这种情况下使用局部变量恰好会影响编译器优化代码的方式,并使其变得更慢。但总体上不会有任何显著差异。嗯……是的,当然……错过了……那么我想答案应该是……40年前(使用C)将变量声明为全局变量是有意义的,因为堆栈空间是有限的——现在,您可能会发现在一些非常古老的文档中引用了它,这只是一个时代错误。
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n,k,m,a=1,c=1;
cin>>n>>m>>k;
m -= n;
while (m>0){
if (k+a<=n) c++;
if (k-a>=1) c++;
m -=c;
a++;
}
cout<<a;
return 0;
}