这道“校门外的树”的算法我不是很理解,希望大家帮我解析一下代码,并举个实际数据的例子给我看一下,非常感谢!
#include <cstdio>
#include <cstring>
int main()
{
int m, n, l, k;
int a[10001];
while (scanf("%d%d", &m, &n) != EOF)
{
memset(a, 0, sizeof(a));
while (n--)
{
scanf("%d%d", &l, &k);
for (int i = 1; i <= k; i++)
{
a[i] = 1;
}
}
int count = 0;
for(int j = 0; j <= m, j++)
{
if(a[j] == 0)
count++;
}
printf("%d\n", count);
}
return 0;
}
哪里不理解呢
一开始数组中所有值都为0,每输入一个范围,就将数组中对应范围内存放的值改为1,重复这一过程直到处理完所有输入
然后统计数组中剩余的0的个数,就是剩余的树的数量