连续线段

  • 题目描述
  • 题目分析
  • 实现思路
  • 代码实现

题目描述

平面上两个点(一个点由(x,y)坐标组成)可构成一个线段,两个线段如果有一个端点相同,则可构成一个连续线段。假设构成线段的两个端点为v1(x1,y1)和v2(x2,y2),在此满足x1<x2,其中v1称为线段的起点,v2为线段的终点。同样,对于连续线段来说,在此满足xi<xi+1(i=1…n-1,n为连续线段中的端点数,xi为相应端点的X轴坐标)。输入一组线段(用两个端点的x、y坐标表示线段,线段个数大于等于2,小于等于100),编程计算出连续线段中包含最多线段数的线段,输出相应的线段数和起点位置(注意,不是最长的连续线段,是包含最多线段的连续线段)。例如:

上图中有10个线段,其中5、10、4号线段连成了一条连续线段,线段数3条,起点位置为5号线段的左端点;6、8、2、3、9号线段连成了另一条连续线段,该连续线段包含的线段数最多,为5条,起点位置是6号线段的左端点。
注意:
1)不考虑线段中间相交的情况;
2)不会有三条或三条以上的线段共一个端点;
3)只会出现一条包含最多线段的连续线段;

【输入形式】
先从控制台输入线段数,然后从下一行开始分行输入各线段两个端点的x、y坐标,其中第一个端点的X轴坐标小于第二个端点的X轴坐标,即x1<x2,x、y坐标都用整数表示,不会超过int的表示范围。各整数坐标值间以一个空格分隔。
【输出形式】
先在控制台输出包含最多线段数的连续线段的线段数,然后输出连续线段的起点的x、y坐标,输出数据都以一个空格分隔。
【样例输入】

1080 75 125 7560 40 80 5580 55 90 20140 120 195 20510 111 70 16522 35 43 4322 175 80 20543 43 60 4090 20 125 6070 165 140 120

【样例输出】

5 22 35

【样例说明】
输入了十个线段,第一个线段两个端点分别为(80,75)和(125,75),其它线段类似,如上图所示,这些线段所构成的连续线段中包含最多线段数的连续线段的线段数为5,起点为(22,35),所以输出:5 22 35。

题目分析

实现思路

  1. 存储输入线段个数、坐标信息
  2. 从输入线段起终点坐标,寻找连续线段的起点,存储
  3. 根据起点坐标,寻找连续线段的终点坐标,并为每条连续线段的线段个数计数,存储
  4. 根据存储的每条线段个数,寻找包含最多线段的连续线段
  5. 打印结果

代码实现

#include <stdio.h>
#include <string.h>struct L
{           //线段int x1; //起点int y1;int x2; //终点int y2;int num; //线段个数
};int main()
{int i = 0, j = 0, n = 0, k = 0, isl = 0, max = 0, res = 0; // n为线段个数,isl判断中间点坐标,max最大长度,返回第res+1的连续线段int Ps[100][4];struct L arr[100];//输入信息,存储坐标存储while (n < 2 || n > 100){ //2<=n<=100scanf("%d", &n); //线段个数}for (i = 0; i < n; i++){while (Ps[i][0] >= Ps[i][2]){ //x1<x2scanf("%d%d%d%d", &Ps[i][0], &Ps[i][1], &Ps[i][2], &Ps[i][3]);}}//找起点for (i = 0; i < n; i++){for (j = 0; j < n; j++){if (i == j)continue;if (Ps[i][0] == Ps[j][2] && Ps[i][1] == Ps[j][3]){isl = 1;break;}}if (isl == 0){arr[k].x1 = Ps[i][0];arr[k].y1 = Ps[i][1];arr[k].x2 = Ps[i][2];arr[k].y2 = Ps[i][3];k++;}isl = 0;}//找终点for (i = 0; i < k; i++){arr[i].num = 1;for (j = 0; j < n; j++){if (arr[i].x2 == Ps[j][0] && arr[i].y2 == Ps[j][1]){arr[i].x2 = Ps[j][2];arr[i].y2 = Ps[j][3];arr[i].num++;j = -1;}}}//找最长for (i = 0; i < k; i++){if (max < arr[i].num){max = arr[i].num;res = i;}}printf("%d %d %d\n", arr[res].num, arr[res].x1, arr[res].y1);return 0;
}

数据结构-连续线段-C语言-[输入n条线段各个端点坐标,求包含最多线段的连续线段]相关推荐

  1. 输入正方形对角线两个端点坐标,求中点坐标

    输入正方形对角线两个端点坐标,求中点坐标 if __name__ == "__main__":a = input().split()li = []# li = [int(n) fo ...

  2. a除以b的编程怎么写C语言,输入a,b两个整数,编程求出a除以b得到的商和余数.c语言...

    C语言编程问题 编程任意输入两个实数a和b,计算下面函数的值,并输出y值. a-b a>b y= a/b a #includevoidmain(){\x09floata,b,y;\x09prin ...

  3. c语言输入两个正整数m和n求其最小公倍数,用C语言编写:输入两个正整数m和n,求其最大公约数和最小公倍数....

    用C语言编写:输入两个正整数m和n,求其最大公约数和最小公倍数. 來源:互聯網  2010-05-25 15:19:26  評論 分類: 電腦/網絡 >> 程序設計 >> 其他 ...

  4. C语言输入三角形三条边边长 算三角形面积

    C语言输入三角形三条边边长 算三角形面积 方法:S=sqrt(p*(p-a)(p-b)(p-c)); //海伦公式 代码: #include<stdio.h> #include<ma ...

  5. 数据结构c语言版题库编程,数据结构习题库(c语言版)

    <数据结构习题库(c语言版)>由会员分享,可在线阅读,更多相关<数据结构习题库(c语言版)(104页珍藏版)>请在人人文库网上搜索. 1.wages in arrears. 2 ...

  6. 数据结构课后答案 c语言版

    在线:https://wenku.baidu.com/view/ddd0f4a10342a8956bec0975f46527d3250ca607.html 百度网盘下载:https://pan.bai ...

  7. r语言library什么意思_医学统计与R语言:百分条图与雷达图

    微信公众号:医学统计与R语言如果你觉得对你有帮助,欢迎转发 百分条图-输入1: library(ggplot2) 结果1: year 输入2: percentbar <- gather(perc ...

  8. 《数据结构与算法 Python语言描述》 读书笔记

    已经发布博客 <数据结构与算法 Python语言描述> 读书笔记 第二章 抽象数据类型和Python类 2.1 抽象数据类型abstract data type:ADT 2.1.1 使用编 ...

  9. C语言输入10个分数 去掉最高分,vb输入10个评委给出的分数,去掉最高分和最低分,计算平均分并输出...

    如何用vb设计一个程序,可以将输入的10个以上的数字 按大小顺序排列出来,可以给我思路,也可以给我答案. 其实从思想上来说,就是一个排序的思路问题.排序的方法有很多.说2个最简单的(设让结果从小到大排 ...

最新文章

  1. 无人驾驶汽车想要“普渡众生”,还要经历15个磨难
  2. 嵌入式linux面试题解析(二)——C语言部分三
  3. layUI 日期组件单独使用 并且放大
  4. 浅谈C++设计模式之工厂方法(Factory Method)
  5. 计算机统考分数短信显示合格,今年起全省八年级网考信息技术 成绩不合格不能升高中...
  6. php获取数组中的全部可以吗,php获取数组中所有值的方法
  7. 总结各类损失函数【修】
  8. fso封装类可以用仿dos命令操作文件
  9. Makefile简易教程
  10. 列表的pop()和路径拼接问题
  11. 联想YOGA四款新品齐发 跨设备新技术Lenovo One惊艳亮相
  12. 指针和字符串,数组和字符串(1)
  13. linux 安装yum 安装php
  14. 发光二极管pcb封装图画法_【AD封装】贴片及插件二极管整流桥(带3D)
  15. 微信表白神秘代码!快发给ta!
  16. python3内建排序函数:sorted()详解
  17. outsystems刚做项目时的注意点-划重点
  18. 斯皮尔 皮尔森 肯德尔_失焦图像的无参考质量评价
  19. ANDROID 绘制 三角形 XML
  20. Mac 取消系统更新的红点——强迫症晚期患者

热门文章

  1. 无法使用以下不同的参数继承com.baomidou.mybatisplus.extension.service.IService: <> 和 <com.itheima.rijidao.en
  2. 【推荐】2020,2021网易数字+大会(云原生微服务+大数据数据库+网易AI实践集合+其他) - (共187份)
  3. 微搭低代码Tab栏组件使用指南
  4. 容器部署在物理机还是虚拟机上?
  5. 基于SSM框架的仿天猫商城项目(前端+后台)
  6. 潮流话机直接对接讯时FXO
  7. 菜鸟教程学习——HTML5 video,audio,input(各种新元素),output,datalist
  8. c语言打出的王字图形图形,C语言编程宝典(王大刚) 3 关键字和标识符
  9. 关于智能水表背后的“节水效应”
  10. c语言彩票随机数7位数,产生7个不同的随机数,类似彩票该怎么实现