C语言蓝桥杯刷题:修剪灌木

题目链接
在这里插入图片描述
在这里插入图片描述

解题思路:
本题需要注意的是树是白天长,然后爱丽丝傍晩对某棵树进行修剪,也就是说树高度是可能在白天达到最大值而在傍晩变成0。我一开始也有一个误区,以为是要修剪的那棵树当天就变成0而不能生长,其实是先生长再修剪。

另外一个需要考虑的就是树的高度啥时候变最大呢?
不难理解,肯定是爱丽丝剪完这棵树,再长到她下次继续来修剪之前啦,可能有同学会问:如果是最后一棵树也是这样吗?答案是是的,它在第一次被修剪前是经过爱丽丝走一趟嘛,但是如果被修剪完再到下次被修剪前,爱丽丝要走两趟(向右再向左,加上第一次到该数,一共3趟)。

最后一个难点就是如何保证每棵树都是被修剪了2次
其实也很好想,采用极端思维,考虑第一棵树和最后一棵树,中间的情况都是在这两棵树之间的。
第一棵树:爱丽丝向右一趟,再向左一趟
第二棵树:爱丽丝向右一趟,再向左一趟,再向右一趟
所以三次循环就可以保证所有数都被剪了两次

而这三次循环中我们就可以统计出所有的树高最大值了

#include <stdio.h>
#include <stdlib.h>
void grow(int arr[], int n)//白天到傍晩所有树长了1cm
{
	for (int i = 0;i < n;i++)
	{
		arr[i]++;
	}
}
void cut(int arr[],  int i)//爱丽丝傍晩对第i棵树进行修剪
{
	arr[i] = 0;
}
void Max(int arr[], int crr[], int n)
{
	for (int i = 0;i < n;i++)
	{
		if (arr[i] > crr[i])
		{
			crr[i] = arr[i];
		}
	}
}
int main(int argc, char *argv[])
{
	// 请在此输入您的代码
	int n = 0;
	scanf("%d", &n);
	int i = 0;//标记爱丽丝当前位置
	int arr[3] = { 0 };//n棵树,arr[i-1]表示第i棵树当前高度

	int crr[3] = { 0 };//crr[i-1]表示第i棵树的最大高度

	//一棵树长最高也就是当天被修剪之后开始长到下次被修剪之前
	//所以最多循环3次即可(第一次向右,第二次向左,第三次再向右)
	//第一个树2次循环就可以长最高
	//最后一棵树需要爱丽丝剪完向左再向右(加上第一次到该树一共3次)
	for (i = 0;i < n;i++)
	{
		grow(arr, n);//白天到傍晩所有树长了1cm
		Max(arr, crr, n);//当前所有树最高多少cm
		cut(arr, i);//爱丽丝傍晩对第i棵树进行修剪
	}
	for (i = n - 2;i >= 0;i--)
	{
		grow(arr, n);//白天到傍晩所有树长了1cm
		Max(arr, crr, n);//当前所有树最高多少cm
		cut(arr, i);//爱丽丝傍晩对第i棵树进行修剪
	}
	for (i = 1;i < n;i++)
	{
		grow(arr, n);//白天到傍晩所有树长了1cm
		Max(arr, crr, n);//当前所有树最高多少cm
		cut(arr, i);//爱丽丝傍晩对第i棵树进行修剪
	}
	for (i = 0;i < n;i++)
	{
		printf("%d\n", crr[i]);
	}
	return 0;
}

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/2343.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

vue后台管理系统

后面可参考下&#xff1a;vue系列&#xff08;三&#xff09;——手把手教你搭建一个vue3管理后台基础模板 以下代码项目gitee地址 文章目录1. 初始化前端项目初始化项目添加加载效果配置 vite.config.js2. 使用路由安装路由配置路由配置别名和跳转安装pathvite.config.jsjsco…

C++类和对象(上篇)

目录 1.类的定义 2.类的访问限定符及封装 2.1类的访问限定符 2.2封装 3.类的作用域 4.类的实例化 5.类的大小 6.this 指针 1.类的定义 class className {// 类体&#xff1a;由成员函数和成员变量组成}; // 一定要注意后面的分号 class为定义类的关键字&#xff0c;Clas…

Golang每日一练(leetDay0012)

目录 34. 查找元素首末位置 Find-first-and-last-position-of-element-in-sorted-array &#x1f31f;&#x1f31f; 35. 搜索插入位置 Search Insert Position &#x1f31f; 36. 有效的数独 Valid Sudoku &#x1f31f;&#x1f31f; &#x1f31f; 每日一练刷题专栏 …

VsCode SSH远程连接服务器【内网穿透公网连接】

文章目录1.前言2.VS code的安装和设置2.1 VS code的下载安装2.2 OpenSSH的启用2.3 为VS code配置ssh2.4 局域网内测试VS code的ssh连接2.5 Cpolar下载安装3.Cpolar端口设置3.1 Cpolar云端设置3.2 Cpolar本地设置4.公网访问测试5.结语1.前言 记得笔者小时候看电视&#xff0c;看…

【安全与风险】密码学介绍

密码学介绍密码历史密码换位&#xff08;Transposition&#xff09;与置换&#xff08;Substitution&#xff09;替换密码&#xff08;Substiution Cipher&#xff09;凯撒密码 &#xff08;100BC 公元前100年&#xff09;移位密码破坏替换密码维吉尼亚密码现代密码学核心原理从…

TCP三次握手/四次挥手

TCP三次握手 任何基于TCP的应用&#xff0c;在发送数据之前&#xff0c;都需要由TCP进行“三次握手”建立连接示意图 第一次握手&#xff1a;客户端PC发送一个SYN位置1&#xff08;SYN1代表请求服务端建立连接&#xff09;的TCP报文发送给要建立TCP连接的Server&#xff0c;此…

23种设计模式

参考链接&#xff1a; 【狂神说Java】通俗易懂的23种设计模式教学&#xff08;停更&#xff09;_哔哩哔哩_bilibili 23种设计模式【狂神说】_狂神说设计模式_miss_you1213的博客-CSDN博客 1. 单例模式 参考链接&#xff1a; 【狂神说Java】单例模式-23种设计模式系列_哔哩哔哩…

Linux(网络基础---网络层)

文章目录0. 前言1. IP协议1-1 基本概念1-2 协议头格式2. 网段划分2-1 基本概念2.2 IP地址分五大类2-3 特殊的IP地址2-4 IP地址的数量限制2-5 私有IP地址和公网IP地址2-6 路由0. 前言 前面我们讲了&#xff0c;应用层、传输层&#xff1b;本章讲网络层。 应用层&#xff1a;我…

GPT-4是个编程高手,真服了!

上周给大家发了一个GPT-4教数学的介绍&#xff0c;很多人都被震撼了&#xff0c;感觉有可能在教育行业引发革命。它在编程领域表现如何&#xff1f;先不说能否替代程序员&#xff0c;这个还有待更多的测试和反馈&#xff0c;我想先试试它能不能像教数学那样教编程。我找了个Jav…

Docker的可视化界面工具

Docker的可视化界面工具1. Portainer1.1 Introduction1.1.1 Official1.2 Download And Deploy1.3 Dashboard1.3.1 Dashboard2. Shipyard2.1 Introduction2.1.1 Character2.1.2 Official2.2 Download And Deploy2.2.1 脚本下载镜像2.2.2 执行脚本2.2.2 查看下载的镜像2.3 Dashbo…

“工作三年,跳槽要求涨薪50%”,合理吗?

如果问在TI行业涨工资最快的方式是什么&#xff1f;回答最多的一定是&#xff1a;跳槽&#xff01;前段时间&#xff0c;知乎上这样一条帖子引发了不少IT圈子的朋友的讨论 &#xff0c;有网友提问 “程序员跳槽要求涨薪50%过分吗&#xff1f;”截图来源于知乎&#xff0c;如侵删…

【百面成神】多线程基础16问,你能坚持到第几问

前 言 &#x1f349; 作者简介&#xff1a;半旧518&#xff0c;长跑型选手&#xff0c;立志坚持写10年博客&#xff0c;专注于java后端 ☕专栏简介&#xff1a;纯手打总结面试题&#xff0c;自用备用 &#x1f330; 文章简介&#xff1a;多线程最基础、重要的16道面试题 文章目…

【百面成神】Redis基础11问,你能坚持到第几问

前 言 &#x1f349; 作者简介&#xff1a;半旧518&#xff0c;长跑型选手&#xff0c;立志坚持写10年博客&#xff0c;专注于java后端 ☕专栏简介&#xff1a;纯手打总结面试题&#xff0c;自用备用 &#x1f330; 文章简介&#xff1a;Redis最基础、重要的11道面试题 文章目录…

AI 未来已至,向量数据库站在新的节点上

“AI 的 iPhone 时刻已经到来。” 在刚刚结束的 NVIDIA GTC Keynote 中&#xff0c;这句话被 NVIDIA CEO 黄仁勋反复提及&#xff0c;长达 1 个多小时的分享中&#xff0c;生成式 AI 相关的内容占据了绝大部分比重。他表示&#xff0c;生成式 AI 的火热能力为企业带来了挑战&a…

2022/3/22 从CV方向角度 —快速解读Nvidia 2023GTC

GTC分享内容和个人看法 3月21号11点&#xff0c;Nvidia开启了GTC主题演讲&#xff0c;这些年英伟达加速库的发展和对AI的投入应用&#xff0c;不难看出掌握GPU加速计算技术的N家肯定是宣扬AI方向的产品和生产工具&#xff0c;下面我将简要汇总下演讲的内容&#xff0c;和从我自…

Java语言-----类与对象的秘密

目录 前言 一、类与对象的介绍 二、类的实例化 三.类与对象的使用方法 3.1对象的初始化 3.2内存显示图 四.this的使用方法 总结 &#x1f63d;个人主页&#xff1a; tq02的博客_CSDN博客-C语言,Java领域博主 &#x1f308;理想目标&#xff1a;努力学习&#xff0c;向Java进…

修改linux网卡配置文件的文件名

修改linux网卡配置文件的文件名 查看自己系统中网卡配置文件的文件名 #查看网卡的配置文件名&#xff0c;已经网络的状态 ip a查看系统是否可以使用ifconfig命令 #输入命令 ifconfig #出现以下图片表示ifconfig的命令可用。可能出现的错误&#xff1a;ifconfig command no foun…

第十七天 JavaScript、Vue详细总结

目录 JavaScript、Vue 1. JavaScript常用对象 1.1 Array对象 1.2 String对象 1.3 自定义对象 1.4 JSON 1.5 BOM 1.6 DOM 2. 事件监听 2.1 事件绑定 2.2 常见事件 2.3 案例 3. Vue 3.1 概述 3.2 快速入门 3.3 常用指令 3.4 生命周期 JavaScript、Vue 今日目标&…

为什么说网络安全是风口行业?是IT行业最后的红利?

前言 “没有网络安全就没有国家安全”。当前&#xff0c;网络安全已被提升到国家战略的高度&#xff0c;成为影响国家安全、社会稳定至关重要的因素之一。 网络安全行业特点 1、就业薪资非常高&#xff0c;涨薪快 2021年猎聘网发布网络安全行业就业薪资行业最高人均33.77万&…

2023年2月用户体验GX评测:国有行及股份行持续领跑,农商行农信社积极探索用户体验提升

易观&#xff1a;2023年2月易观千帆用户体验GX评测显示&#xff0c;国有行及股份制银行继续领跑手机银行用户体验&#xff0c;平安口袋银行、中国工商银行、招商银行稳居AAAAA级&#xff1b;城商行、农商行、农信社重视用户体验&#xff0c;银行下一步重点依然是狠抓用户体验建…