有个N人排成一排,假设他们的身高均为正整数,请找出其中符合以下条件的人:
排在他前面且比他高的人数与排在他后面且比他高的人数相等。
输入N
第一行为一个正整数,0<N<1000,表示有多少个人。
下面行,每行一个正整数,表示从前往后每个人的身高,假设第 个人的身高为。
输出
一行一个整数,表示满足这个条件的人数。
样例输入
4
1
2
1
3
输出
2
分析:
一个一个遍历, 如果他前面的人比他高,让cunt1加一,如果后面的人也比他高,就让cunt2加一,每一个和前后比完之后比较cunt1与cunt2,相等则人数加一,不等则啥都不做;
#!/bin/bash
read x
t=0
declare -a pl
for ((i=1;i<=${x};i++));do
read d
pl[${i}]=${d}
done
t1=0
t2=0
cunt=0
for ((j=1;j<=${x};j++));do
t1=0
t2=0
for ((m=1;m<=${j};m++));do
if [[ ${pl[${m}]} -gt ${pl[${j}]} ]];then
t1=$[${t1}+1]
fi
done
for ((n=$[${j}+1];n<=${x};n++));do
if [[ ${pl[${n}]} -gt ${pl[${j}]} ]];then
t2=$[${t2}+1]
fi
done
if [[ ${t1} -eq ${t2} ]];then
cunt=$[${cunt}+1]
fi
done
echo ${cunt}
C语言:
#include <stdio.h>
int arr[1000] = {0};
int get_tal(int *arr, int n) {
for (int i = 1; i <= n; i++) {
scanf("%d", &arr[i]);
}
int t1, t2;
int cunt = 0;
for (int j = 1; j <= n; j++) {
t1 = 0, t2 = 0;
for(int m = 1; m <= j; m++) {
if (arr[m] > arr[j]) t1++;
}
for(int k = j + 1; k <= n; k++) {
if (arr[k] > arr[j]) t2++;
}
if (t1 == t2) cunt++;
}
return cunt;
}
int main() {
int n;
scanf("%d", &n);
printf("%d\n", get_tal(arr, n));
return 0;
}