問題描述
愛麗絲要完成一項修剪灌木的工作。
有 N?棵灌木整齊的從左到右排成一排。愛麗絲在每天傍晩會修剪一棵灌 木, 讓灌木的高度變為 0 厘米。愛麗絲修剪灌木的順序是從最左側的灌木開始, 每天向右修剪一棵灌木。當修剪了最右側的灌木后, 她會調轉方向, 下一天開 始向左修剪灌木。直到修剪了最左的灌木后再次調轉方向。然后如此循環往復。
灌木每天從早上到傍晩會長高 1 厘米, 而其余時間不會長高。在第一天的 早晨, 所有灌木的高度都是 0 厘米。愛麗絲想知道每棵灌木最高長到多高。
輸入格式
一個正整數 N, 含義如題面所述。
輸出格式
輸出 N行, 每行一個整數, 第 i行表示從左到右第 i?棵樹最高能長到多高。
樣例輸入
3
樣例輸出
4
2
4
因為樹木都是在傍晚修剪,所以樹木在修剪前已經長了一厘米,這個是我們要注意的。
所以樹木共有三個時間段生長?:(設n為樹木棵樹,i為第幾棵樹)
1、在第一輪開始修剪也就是從左向右修剪時,這期間的天數就是該灌木在這個時間間隔內能長到的高度。也就是 i;下圖可助理解
2、.一個是從左向右修剪過該灌木后繼續向右然后調轉方向向左,到再次修剪到該灌木的這一天。這期間的天數就是該灌木在這個時間間隔內能長到的高度。也就是2*(n-i)。下圖可驗證
3、一個是從右向左修剪過該灌木后繼續向左然后調轉方向向右,到再次修剪到該灌木的這一天。這期間的天數就是該灌木在這個時間間隔內能長到的高度。也就是2*(i-1);下圖可驗證
則最高高度就是在這三個高度里面選擇大值;
#includeint main()
{
int i,a,b;
scanf("%d",&a);
for(i=1;i<=a;i++){
printf("%d\n",N(i,2*(a-i),2*(i-1)));
}
return 0;
}
int N(int b,int c,int d){
if(b>d){
if(b>c){
return b;
}
else{
return c;
}
}
else{
if(c>d){
return c;
}
else{
return d;
}
}
}
你是否還在尋找穩定的海外服務器提供商?創新互聯www.cdcxhl.cn海外機房具備T級流量清洗系統配攻擊溯源,準確流量調度確保服務器高可用性,企業級服務器適合批量采購,新人活動首月15元起,快前往官網查看詳情吧
網站欄目:藍橋杯C/C++百校真題賽(1期)修剪灌木-創新互聯
URL鏈接:http://newbst.com/article34/dooose.html
成都網站建設公司_創新互聯,為您提供域名注冊、網站策劃、小程序開發、動態網站、搜索引擎優化、服務器托管
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯