我寒假是在洛谷上刷的题,它是闯关式刷题,目前我是在第四关,从入门->顺序分支->循环->数组。
这些关卡的难度其实还好,没有涉及什么算法,但是有几点还是要记录一下。
先说一个疑问吧,有一道这样的题,
但是把代码写完后,跑第一个测试样例时并不能输入12行数据,但这个代码居然AC了!在讨论发表了问题后,众说纷纭。有的说可以不输入12行,有的又说在正规比赛中AC的代码是错误的????
2.数组下标的巧用
P1047 校门外的树 - 洛谷 | 计算机科学教育新生态 https://www.luogu.com.cn/problem/P1047
我一直想着用数组记录区间的值,但发现很难算总共被移走了多少树,后来发现直接用数组的下标记录所有的树超级简单。数组下标代表树在第几个位置上,值为0说明未被移走,之后就计算一共有所少个为0 就好啦
#include<stdio.h>
int main()
{
int a[10001],i,j,l,m,x,y,s=0;
scanf("%d %d",&l,&m);
for(i=0;i<=l;i++)
{
a[i]=0;
}
for(i=0;i<m;i++)
{
scanf("%d %d",&x,&y);
for(j=x;j<=y;j++)
{
a[j]=1;
}
}
for(i=0;i<=l;i++)
{
if(a[i]==0) s++;
}
printf("%d",s);
return 0;
}
3.不定长数组使用方式
int *a,i=0;
a=(int )malloc(x(sizeof(int)));
while(x!=0)
{ a[i]=x;
scanf("%d",&x);
i++;}
这样就不用初始化数组的大小啦