武科大有沁湖,与黄家湖相连,是武科大的校内湖,湖中一座长桥连通南北两苑,武科大以沁湖为载体,每年举办汇湖龙舟赛、沁湖诗会、沁湖时光、沁讲登、汇湖鱼交海校园文化活动。记湖边上也裁有很多花,小明知道后就一直想去赏花。现在小明得知在记湖边上有几个点,这们个点以了到1顺时针为国 一益,a个点栽有一粮化财。有四种化树:梅化(化期1-3月)、楼化(化期3-4月)、白桶化(花期4-5月)、桂化(化期9-10月),每种化只任目己的花开花。小明给每个点标记一个值p,p的值表示改点是哪种花,1代表梅花,2代表楼花,3代表石楠花,4代表桂花。小明现在制定了m种观赏方案,每定一个月份z,在2月去第花,在由于汇湖太大,小明就选了湖边两个点山、!,想者就欣第从u到e沿途的花就好了,因为湖中有桥,现在他发现从u走到了几种不同的方式,他想知道沿途最多能看到多少裸树正在开花(走到一个点才能看见这个点的花是否开了,不能重复经过同一个I*: (1) 如地点用结构体类型 (至少包括和什么类型的花、是杏能吞到花) struct place int §_type;//1-4 int if open://0没开,开放 提示:利用malloc 建立动态数组 出发点和结束点考志在桥的同侧还是异侧。点)。

时间: 2023-11-15 12:06:24 浏览: 31
首先,我们可以将每个点的信息存储在一个结构体数组中,每个结构体包括花的类型和是否开放的信息。然后,对于每个月份z和起始点u,我们可以使用广度优先搜索算法来找到从起始点u到终点e的所有路径,并计算每条路径上能看到的最多裸树的数量。最后,我们返回所有路径中最多能看到的裸树的数量即可。 具体实现步骤如下: 1. 定义结构体类型来存储每个点的信息: ``` struct place { int flower_type; // 1-4 int is_open; // 0-1 }; ``` 2. 根据输入数据,创建一个结构体数组来存储每个点的信息: ``` int n; // 点的数量 scanf("%d", &n); struct place *places = (struct place*) malloc(sizeof(struct place) * n); for (int i = 0; i < n; i++) { int flower, is_open; scanf("%d %d", &flower, &is_open); places[i].flower_type = flower; places[i].is_open = is_open; } ``` 3. 对于每个月份z和起始点u,使用广度优先搜索算法来找到从起始点u到终点e的所有路径,并计算每条路径上能看到的最多裸树的数量: ``` int m; // 观赏方案的数量 scanf("%d", &m); while (m--) { int z, u, e; scanf("%d %d %d", &z, &u, &e); u--; // 点的编号从0开始,需要减1 e--; int max_naked_trees = 0; // 广搜遍历所有可能的路径 for (int i = 0; i < n; i++) { if (i == u || i == e) continue; // 起点和终点不能在路径上 if (places[i].flower_type == z && places[i].is_open) { // 如果当前点的花和月份z一致,并且花开了,才进行搜索 int *visited = (int*) calloc(n, sizeof(int)); visited[i] = 1; queue<int> q; q.push(u); int naked_trees = 0; while (!q.empty()) { int cur = q.front(); q.pop(); if (cur == e) break; for (int j = 0; j < n; j++) { if (j == cur || visited[j] || places[j].flower_type != z) continue; int is_bridge = (cur < n / 2 && j >= n / 2) || (cur >= n / 2 && j < n / 2); // 判断是否经过桥 if (is_bridge) continue; visited[j] = 1; q.push(j); if (places[j].is_open) { naked_trees += (places[j].flower_type == 2 || places[j].flower_type == 3); // 如果当前点开了花,就计算能看到的裸树的数量 } } } max_naked_trees = max(max_naked_trees, naked_trees); free(visited); } } printf("%d\n", max_naked_trees); } ``` 注意,在判断是否经过桥的时候,我们需要考虑起点和终点是否在桥的同侧或异侧,如果在同侧就不能经过桥,否则可以经过桥。 另外,为了防止重复访问同一个点,我们需要使用一个visited数组来记录每个点是否已经被访问过。在计算每条路径上能看到的裸树的数量时,我们只统计已经开了花的点中的楼花和石楠花。

相关推荐

最新推荐

recommend-type

Freeswitch集成科大讯飞及百度语音服务.docx

Freeswitch集成科大讯飞及百度语音服务,Freeswitch集成科大讯飞及百度语音服务,Freeswitch集成科大讯飞及百度语音服务
recommend-type

江科大SQL课程实验报告

江苏科技大学数据库课程实验报告,包括数据定义、数据操纵、完整性约束、数据库设计,数据库编程,共计5个实验的代码
recommend-type

国科大模式识别和机器学习考试提纲

这个是19年考试前整理的考试范围提纲, 因为19年的考试题目变化较大,取消了选择题,这里只是一个提纲,请大家酌情下载。
recommend-type

国科大模式识别与机器学习考题总结(详细答案)

国科大模式识别与机器学习考题总结 国科大秋季学期
recommend-type

信号与系统实验一、二、三

信号与系统的实验报告 武科大 实验一、二、三的实验报告 运行的都很正确,大家可以直接搬用
recommend-type

RTL8188FU-Linux-v5.7.4.2-36687.20200602.tar(20765).gz

REALTEK 8188FTV 8188eus 8188etv linux驱动程序稳定版本, 支持AP,STA 以及AP+STA 共存模式。 稳定支持linux4.0以上内核。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

Redis验证与连接:快速连接Redis服务器指南

![Redis验证与连接:快速连接Redis服务器指南](https://img-blog.csdnimg.cn/20200905155530592.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzMzNTg5NTEw,size_16,color_FFFFFF,t_70) # 1. Redis验证与连接概述 Redis是一个开源的、内存中的数据结构存储系统,它使用键值对来存储数据。为了确保数据的安全和完整性,Redis提供了多
recommend-type

gunicorn -k geventwebsocket.gunicorn.workers.GeventWebSocketWorker app:app 报错 ModuleNotFoundError: No module named 'geventwebsocket' ]

这个报错是因为在你的环境中没有安装 `geventwebsocket` 模块,可以使用下面的命令来安装: ``` pip install gevent-websocket ``` 安装完成后再次运行 `gunicorn -k geventwebsocket.gunicorn.workers.GeventWebSocketWorker app:app` 就不会出现这个报错了。
recommend-type

c++校园超市商品信息管理系统课程设计说明书(含源代码) (2).pdf

校园超市商品信息管理系统课程设计旨在帮助学生深入理解程序设计的基础知识,同时锻炼他们的实际操作能力。通过设计和实现一个校园超市商品信息管理系统,学生掌握了如何利用计算机科学与技术知识解决实际问题的能力。在课程设计过程中,学生需要对超市商品和销售员的关系进行有效管理,使系统功能更全面、实用,从而提高用户体验和便利性。 学生在课程设计过程中展现了积极的学习态度和纪律,没有缺勤情况,演示过程流畅且作品具有很强的使用价值。设计报告完整详细,展现了对问题的深入思考和解决能力。在答辩环节中,学生能够自信地回答问题,展示出扎实的专业知识和逻辑思维能力。教师对学生的表现予以肯定,认为学生在课程设计中表现出色,值得称赞。 整个课程设计过程包括平时成绩、报告成绩和演示与答辩成绩三个部分,其中平时表现占比20%,报告成绩占比40%,演示与答辩成绩占比40%。通过这三个部分的综合评定,最终为学生总成绩提供参考。总评分以百分制计算,全面评估学生在课程设计中的各项表现,最终为学生提供综合评价和反馈意见。 通过校园超市商品信息管理系统课程设计,学生不仅提升了对程序设计基础知识的理解与应用能力,同时也增强了团队协作和沟通能力。这一过程旨在培养学生综合运用技术解决问题的能力,为其未来的专业发展打下坚实基础。学生在进行校园超市商品信息管理系统课程设计过程中,不仅获得了理论知识的提升,同时也锻炼了实践能力和创新思维,为其未来的职业发展奠定了坚实基础。 校园超市商品信息管理系统课程设计的目的在于促进学生对程序设计基础知识的深入理解与掌握,同时培养学生解决实际问题的能力。通过对系统功能和用户需求的全面考量,学生设计了一个实用、高效的校园超市商品信息管理系统,为用户提供了更便捷、更高效的管理和使用体验。 综上所述,校园超市商品信息管理系统课程设计是一项旨在提升学生综合能力和实践技能的重要教学活动。通过此次设计,学生不仅深化了对程序设计基础知识的理解,还培养了解决实际问题的能力和团队合作精神。这一过程将为学生未来的专业发展提供坚实基础,使其在实际工作中能够胜任更多挑战。