C语言合并线条

这是一个C语言编程问题,目标是合并线段并找到最长的合并线段及其组成部分。给定n条线段,通过遍历和配对方式找出可以合并的线段,最终输出最长线段的长度和由多少条小线段组成。程序中使用了两个数组b[]和p[],以及额外的数组记录线段状态,确保所有可能的配对都被考虑。
摘要由CSDN通过智能技术生成

题目

一条很长的尺子,上面标记着整数点的坐标。如:

现在给出n条线段,每条线段表示为x—y(x和y为整数,x<=y),两条线段能合并的条件是x—y,y—z,合并为x—z。比如线段2—4和线段4—6可以合并为线段2—6。(线段2—4和线段3—6则不可以合并为线段2—6)

求最终能合并的最长的线段,且输出这条最长的线段是由多少条小线段组成的。

比如有6条线段:2—7,1—3,3—12,12—20,7—10,4—50

那么可以合并成以下线段:

1—3,3—12,12—20 长度为20-1=19 由3个线段组成

2—7,7—10         长度为10-2=8  由2个线段组成

4—50               长度为50-4=46 由1个线段组成

那么最长的一条就是第三个,所以结果为46,1。

需要注意的是:如果有两条不一样的连续的线段长度同时为最大,那么取组成线段数多的一条。

例子:1—5,5—10,1—10,输出: 9,2

思路:假设有n条线段,建立2个数组,一个b[ ]为前面那个数,一个p[ ]为后面那个数,设找配对条为第 i 条,被配对为第 a 条,第一次我们可以拿第1条轮流与其他的线段配对,第二次拿第2条以此类推到第n条。一条线段与另一条线段配对后,如1-2与2-4,就将末尾的p[ i ]从2变为4,然后拿4与其他线进行配对, 之后将其比较出最长的一条线。                                            

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值