main()
{
int a[10001]={0},i,j,h,r,m,n,o=0;
scanf("%d%d",&m,&n);
for(i=0;i<n;i++)
{
scanf("%d%d",&h,&r);
for(j=h-1;j<r;j++)
a[j]=1;
}
for(i=0;i<m;i++)
if(a[i]==0)
o++;
printf("%d",o);
getchar();
getchar();
}
为何用样例输出,得到297???
兄台请注意这一句:
即0,1,2,……,L,都种有一棵树。
上述程序以1为0,以2为1……是这个意思吧?
那么这位将0置于何处?按照你的思路,0为-1,而这在C中应该是看不到的,所以你忽视的0的存在,结果应为297+1(即加上“0”);
切记,还是劝告你以a[i]表示点i上有无树木。
#include <cstdlib>
#include <iostream>
using namespace std;
int s[10050];
int main(int argc, char *argv[])
{
int l,n,i,j,sum=0;
cin >> l >> n;
int a[n],b[n];
for (i=1;i<=n;i++)
{
cin >> a[i] >> b[i];
for (j=a[i];j<=b[i];j++)
{
s[j]=1;
}
}
for (i=0;i<=l;i++)
{
if (s[i]==0) sum++;
}
cout << sum << endl;
system("PAUSE");
return EXIT_SUCCESS;
}
hash 哈希