zoj 1338

13 篇文章 0 订阅
/*
zoj_1338    模拟
看了N就才看到题意。。
就是说有一串数字是由升序和降序组成,要我们找所有升序的平均数和所有降序的平均数。
看懂题目的话就知道是很水的一道题,代码写的很恶心,懒的改了。
*/
#include <iostream>
#include <cstdio>
using namespace std;
int num[1010];

int main()
{
    int i,len;
    bool up,down;
    int mid; //mid未判断升降序时临时记录
    int time1,time2,num1,num2;//time1升序出现次数,time2降序出现次数,num1升序总元素数,num2降序总元素数
    while( scanf( "%d",&num[0] ) && num[0] )
    {
        i=1;
        while( scanf( "%d",&num[i] ) && num[i] )
            i++;
        len=i , num1=0 , num2=0 ;
        mid=0 , up=false , down=false ;
        time1=0 , time2=0;
        for( i=1;i<len;i++ )
        {
            if( up && num[i]>=num[i-1] )
                num1++;
            else if( down && num[i]<=num[i-1] )
                num2++;
            else if( up && num[i]<num[i-1] )
            {
                up=false;
                down=true;
                num2++;
                time2++;
            }
            else if( down && num[i]>num[i-1] )
            {
                down=false;
                up=true;
                num1++;
                time1++;
            }
            else if( !up && !down && num[i]>num[i-1] )
            {
                up=true;
                num1+=mid , mid=0;
                num1++;
                time1++;
            }
            else if( !up && !down && num[i]<num[i-1] )
            {
                down=true;
                num2+=mid , mid=0;
                num2++;
                time2++;
            }
            else if( !up && !down && num[i]==num[i-1] )
                mid++;
        }
        printf( "Nr values = %d:  ",len );
        if( time1==0 ) printf( "0.000000 " );
        else printf( "%.6lf ",double(num1)/double(time1) );
        if( time2==0 ) printf( "0.000000\n" );
        else printf( "%.6lf\n",double(num2)/double(time2) );
    }
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值