讨论 / 13题的困惑
WAharo 2011-02-08 03:48:00
点我顶贴 收藏 删除
#include"stdio.h"

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???

#1 897357142@2010-06-11 05:20:00
回复 删除
附13解答

兄台请注意这一句:

即0,1,2,……,L,都种有一棵树。

上述程序以1为0,以2为1……是这个意思吧?

那么这位将0置于何处?按照你的思路,0为-1,而这在C中应该是看不到的,所以你忽视的0的存在,结果应为297+1(即加上“0”);

切记,还是劝告你以a[i]表示点i上有无树木。

#2 xiangweilai@2011-02-08 03:48:00
回复 删除
ac

#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 哈希

查看更多回复
提交回复