【问题描述】
爱丽丝要完成一项修剪灌木的工作。 有 N 棵灌木整齐的从左到右排成一排。爱丽丝在每天傍晚会修剪一棵灌 木,让灌木的高度变为 0 厘米。爱丽丝修剪灌木的顺序是从最左侧的灌木开始, 每天向右修剪一棵灌木。当修剪了最右侧的灌木后,她会调转方向,下一天开 始向左修剪灌木。直到修剪了最左的灌木后再次调转方向。然后如此循环往复。 灌木每天从早上到傍晚会长高 1 厘米,而其余时间不会长高。在第一天的 早晨,所有灌木的高度都是 0 厘米。爱丽丝想知道每棵灌木最高长到多高。
【分析】
需要用到循环,并且需要记录天数,如果使用 day%N 来确定修建那颗的话,不合理 想不出来就用比较笨的办法 day++ day-- ,由题干可以知道 经过 3*N 天可以知道N棵树的最高长度,所以,循环3*N 次
【代码】
int max(int a,int b){
if (a>=b){
return a;
}
else {
return b;
}
}
while(a < 3*N)
{
for (int i=0;i<N;i++)
{
n[i]++;
}
MAX[day] = max(MAX[day],n[day]);
n[day] = 0;
if (a<N-1) day++;
else if (a<2*(N-1)) day--;
else if (a<3*(N-1)) day++;
a++;
}
【思考】
对于问题的思考分析还是太片面,不能找出更好的解决办法,还是得多看看代码,扩展自己的思路