第十三届蓝桥杯 2022 C/C++组 修剪灌木

目录

题目:

题目描述:

题目链接:

思路:

核心思路:

思路详解:

代码:

代码详解:


题目:

题目描述:

题目链接:

P8781 [蓝桥杯 2022 省 B] 修剪灌木 - 洛谷

修剪灌木 - 蓝桥云课

思路:

核心思路:

模拟+找规律

思路详解:

这题的核心是理解题意并想清楚最高高度是怎么来的。求最高高度:爱丽丝刚修剪完第i颗树,等到她再一次碰到这颗树走的路就是最高高度。当然由题的情景要分成两种情况,第一种:ai->an->ai(即剪完向右走),第二种ai->a1->ai(即剪完向左走)。第一种情况走的路是2*(n-i),算式中n-i表示离右端点的距离,乘2是因为走过去还要走回来。第二种情况走的路是2*(i-1),算式中i-1表示离左端点的距离,乘2是因为走过去还要走回来。显然通过思考或者在草稿纸上模拟,靠近左端点的树应该取剪完向右走的路更长,靠近右端点应该取剪完向左的

代码:

代码详解:

#include<bits/stdc++.h> //这题考察的是模拟+找规律,能正确的分析出怎么在该情景中求最高高度就很简单了 
using namespace std; //求最高高度:爱丽丝刚修剪完第i颗树,等到她再一次碰到这颗树走的路就是最高高度
//当然由题的情景要分成两种情况,第一种:ai->an->ai(即剪完向右走),第二种ai->a1->ai(即剪完向左走)
//第一种情况走的路是2*(n-i),算式中n-i表示离右端点的距离,乘2是因为走过去还要走回来
//第二种情况走的路是2*(i-1),算式中i-1表示离左端点的距离,乘2是因为走过去还要走回来
//显然通过思考或者在草稿纸上模拟,靠近左端点的树应该取剪完向右走的路更长,靠近右端点应该取剪完向左的 

int n;

int main()
{
	cin>>n;
	for(int i=1;i<=n;i++)
	{
		cout<<max(2*(n-i),2*(i-1))<<endl; //两种情况的路取max即为最高高度 
	}
	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值