printfscanf_ @ 2022-03-22 14:36:28
#include <stdio.h>
int main()
{
int n[210];
int nn=0;
int num;
int sum=0;
int i=0,j=0,k=0,t=0;
num=0;
scanf("%d",&nn);
while((nn*nn)!=sum)
{
scanf("%d",&n[i]);
sum=sum+n[i];
i++;
}
t=i;
for(j=0;j<=t;j++)
{
for(i=0;i<n[j];i++)
{
if(k==nn)
{
printf("\n");
k=0;
}
printf("%d",num);
k++;
}
if(num==1)
{
num=0;
}
else
{
num=1;
}
}
return 0;
}
此代码80分4测试点TLE,9测试点WA
但我将 int n[205]
改为 int n[201]
则变为60分.4点变正确了,3测试点.7测试点.9测试点.WA,6测试点.TLE
我又将int n[205]
改为int n[210]
则只剩20分,但是这回9点正确,1.3.5.6.8点TEL,2.7.10WA
我现在不理解的点很多,求大佬帮我解答
by optimize_2 @ 2022-03-22 14:57:58
@printfscanf_ 数组开小了
n 开成 400 并且放到 mian 外面就过了
by optimize_2 @ 2022-03-22 14:58:20
https://www.luogu.com.cn/record/72061154
by printfscanf_ @ 2022-03-22 15:08:55
@optimize_2 谢谢,但是为什么同样的代码放函数里就还是不行呢?
by optimize_2 @ 2022-03-22 15:10:40
@printfscanf_ 可能是放 main
里初始值不是 0 没仔细看
by 龙水流深 @ 2022-03-22 15:29:24
申请的空间不一样。
函数内申请的内存是动态分配的,初值不确定,能申请的空间小。(栈空间)
函数外申请的是在编译期申请的内存,初值为0,能申请的空间大。(堆空间)
综上,数组最好在函数外定义。
by 龙水流深 @ 2022-03-22 15:30:07
@printfscanf_
by Programmer_1745 @ 2022-03-22 15:31:16
这种变量,数组,一定要放在main外面,否则会MLE或者TLE或者RE
by printfscanf_ @ 2022-03-22 16:21:42
@龙水流深 感谢
by printfscanf_ @ 2022-03-22 16:22:06
@Programmer_1745 感谢
by Programmer_1745 @ 2022-03-22 16:28:28
@printfscanf_ 没事没事,有问题在@我好了