酷代码 AI
菜单
服务商

Pascal实现电视节目观看数量最大化问题的解决方案

以下是解决该问题的Pascal代码: ```pascal program TVPrograms; type ProgramType = record start: integer; endTime: integer; end; var programs: array[1..100] of ProgramType; n, i, j, count, currentEnd: integer; temp: ProgramType; // 交换两个节目的位置 procedure swap(var a, b: ProgramType); var t: ProgramType; begin t := a; a := b; b := t; end; // 按节目结束时间排序 procedure sortPrograms(var arr: array of ProgramType; len: integer); var i, j: integer; begin for i := 1 to len - 1 do for j := i + 1 to len do if arr[i].endTime > arr[j].endTime then swap(arr[i], arr[j]); end; begin readln(n); while n <> 0 do begin // 读取节目信息 for i := 1 to n do begin readln(programs[i].start, programs[i].endTime); end; // 按节目结束时间排序 sortPrograms(programs, n); // 初始化计数器和当前结束时间 count := 0; currentEnd := 0; // 贪心算法选择节目 for i := 1 to n do begin if programs[i].start >= currentEnd then begin inc(count); currentEnd := programs[i].endTime; end; end; // 输出结果 writeln(count); // 读取下一组数据 readln(n); end; end. ``` ### 代码解释 1. **数据结构**:定义了一个`ProgramType`记录类型,包含节目开始时间`start`和结束时间`endTime`。 2. **排序函数**:`sortPrograms`函数使用冒泡排序算法按节目结束时间对节目进行排序。 3. **贪心算法**:在排序后,从第一个节目开始,只要当前节目的开始时间大于等于上一个节目结束时间,就选择该节目,并更新当前结束时间。 4. **主程序**:读取输入的节目数量和每个节目的开始和结束时间,调用排序函数,使用贪心算法选择节目,并输出能完整看到的节目数量。 ######[AI问答 | 587点数解答 | 2026-03-18 18:01:57]

相关提问
本站限时免费提问中
实用工具查看更多
Linux在线手册 [开发类]
Jquery在线手册 [开发类]
今日油价 [生活类]
图片互转base64 [开发类]
时间转换器 [开发类]