比升高

有个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;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值