內容
有一個農場有寬度為n的圍籬, 每個圍籬都有各自的高度 h[1], h[2],...,h[n]
有些圍籬被吹斷了,農場主人要來修補這些圍籬,但他忘記這些壞掉的圍籬原本高度是多少,為了減少成本,他會取斷掉的圍籬位置相鄰左邊和右邊較小的那個高度填上去,問需要多少成本
題目保證不會有兩個相鄰的吹斷圍籬,而穿斷的圍籬有可能位在邊界
輸入說明
輸入包含兩行
第一行有一個正整數 n
第二行有 n 個以空隔分隔的整數 h[1], h[2],...,h[n]
數字範圍
- $3\le n\le100$
- $0\le h[i]\le 100$
子題配分
- (60%): n = 3
- (40%): 無額外限制
輸出說明
輸出一個正整數表示新增的圍籬長度總和
範例輸入1
3
2 0 4
範例輸出1
2
範例輸入2
9
0 5 3 0 6 4 0 1 0
範例輸出2
10
程式
#include <iostream> #include <algorithm> using namespace std; int main() { int n; cin>>n; int h[n+2]={0}; for(int i=1; i<=n; i++){ cin>>h[i]; } int total=0; for(int i=1; i<=n; i++){ int arr[5]={0}; int x; if(h[i]==0){ copy(h+i-1,h+i+2,arr); if(arr[0]>arr[2]&&arr[2]!=0||arr[0]==0) x=arr[2]; else x=arr[0]; total += x; } } cout<<total; return 0; }
0 Comments
張貼留言