解题思路:删去所以车段的交集,每个车段需要“砍树”为:(末-起+1),原本可以植树总共为 :(l+1),结果是:(总-砍)
注意事项:
参考代码:
#include<stdio.h>
#define M 100
int main()
{int l,m,a[M],b[M],tree=0;//l表示长度,m表示条数,a[],b[]分别保存站台起始坐标
int i,j;
scanf("%d%d",&l,&m);
tree=l+1;//建设车站前树数量
for(i=0;i<m;i++)
scanf("%d%d",&a[i],&b[i]);
for(i=0;i<m-1;i++)//每个车间段与其他段比较(有交集就删除交集)
{for(j=i+1;j<m;j++)
{if((a[j]>=a[i]&&b[j]<=b[i]))//1包含于( 后包含于前
{a[j]=0;b[j]=0;//真包含的部分置0
}
else if((a[j]<=a[i]&&b[j]>=b[i]))//1或前包含于后,)
{a[i]=0;b[i]=0;break;
}
else if(a[j]<=b[i]&&b[j]>b[i])//3有靠右的交集
{a[j]=b[i]+1;//去掉与前一个区域交集
}
else if(b[j]>=a[i]&&a[j]<a[i])//4有靠左的交集
{b[j]=a[i]-1;//去掉与前一个区域交集
}
}
}
for(i=0;i<m;i++)
{if(a[i]!=b[i])//即被其他车段包含的部分不参与计算
tree=tree-(b[i]-a[i]+1);
}
printf("%d",tree);
}
0.0分
0 人评分
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:541 |
C语言训练-亲密数 (C语言代码)浏览:697 |
【亲和数】 (C语言代码)浏览:628 |
C语言程序设计教程(第三版)课后习题9.4 (C语言代码)浏览:724 |
2004年秋浙江省计算机等级考试二级C 编程题(1) (C语言代码)浏览:331 |
C语言程序设计教程(第三版)课后习题12.1 (C语言代码)浏览:689 |
数列排序 (C语言代码)浏览:674 |
陶陶摘苹果2 (C++代码)浏览:578 |
C语言程序设计教程(第三版)课后习题5.7 (C语言代码)浏览:607 |
用getchar()函数接收字符,正序输入为什么会倒序输出浏览:767 |