也是前几天的调剂机试题,没写出来果然是因为考场太紧张了????
#include <iostream>
#include <cstdio>
#include <string>
#include <algorithm>
#include <vector>
#include <math.h>
using namespace std;
int capacity_caculate(int *num, int start, int end){
int capacity = 0;
int max_water = 0;
if(num[start] < num[end]){
max_water = num[start];
}
else{
max_water = num[end];
}
for(int i = start; i <= end; i++){
int temp = max_water - num[i];
if(temp > 0){
capacity = capacity + temp;
}
}
return capacity;
}
int main(){
int capacity_All = 0;
int num = 0;
scanf("%d", &num);
int *waterFall = new int[num + 2];
for(int i = 0; i < num; i++){
scanf("%d", &waterFall[i + 1]);
}
waterFall[0] = waterFall[1];
waterFall[num + 1] = waterFall[num];
for(int i = 0; i < num + 2; i++){
printf("%d ", waterFall[i]);
}
printf("\n");
int *pointSE = new int[num];
int mark = 0;
for(int i = 1; i <= num; i++){
if(waterFall[i] >= waterFall[i - 1] && waterFall[i] >= waterFall[i + 1]){
pointSE[mark] = i;
mark++;
}
}
printf("mark%d\n", mark);
for(int i = 0; i < mark - 1; i++){
printf("%d - %d - is %d\n", pointSE[i], pointSE[i + 1], capacity_caculate(waterFall, pointSE[i], pointSE[i + 1]));
capacity_All = capacity_All + capacity_caculate(waterFall, pointSE[i], pointSE[i + 1]);
}
printf("capacityAll is %d", capacity_All);
return 0;
}