Day 1: Interquartile Range

内容:


说明:

跟上次的四分位基本类似,无非是求头尾分位之间的范围

示例代码:

#include <cmath>
#include <cstdio>
#include <vector>
#include <iostream>
#include <algorithm>
using namespace std;

//by zhaocl
int main() {
    /* Enter your code here. Read input from STDIN. Print output to STDOUT */  
    int T;
    cin >> T;

    vector<int> arr1( T );
    vector<int> arr2( T );
    vector<int> arr;

    for( int i = 0; i < T; i++ )
    {
        cin >> arr1[i];
    }

    for( int i = 0; i < T; i++ )
    {
        cin >> arr2[i];
    }

    for( int i = 0; i < T; i++ )
    {
        for( int j = 0; j < arr2[i]; j++ )
        {
            arr.push_back( arr1[i] );
        }
    }

    sort( arr.begin(), arr.end() );

    int N1 = 0, N2 = 0, N3 = 0;
    double Q1 = 0.0, Q2 = 0.0, Q3 = 0.0;
    int n = arr.size();

    if( n % 2 == 0 )
    {
        int m = n / 2;

        if( m % 2 == 0 )
        {
            N1 = int( ( n + 1 ) * 0.25 ) - 1;
            Q1 = ( arr[N1] + arr[N1 + 1] ) / 2;
            N2 = int( ( n + 1 ) * 0.5 ) - 1;
            Q2 = ( arr[N2] + arr[N2 + 1] ) / 2;
            N3 = int( ( n + 1 ) * 0.75 ) - 1;
            Q3 = ( arr[N3] + arr[N3 + 1] ) / 2;
        }
        else
        {
            N1 = int( ( n + 1 ) * 0.25 );
            Q1 = arr[N1];
            N2 = int( ( n + 1 ) * 0.5 ) - 1;
            Q2 = ( arr[N2] + arr[N2 + 1] ) / 2;
            N3 = int( ( n + 1 ) * 0.75 ) - 1;
            Q3 = arr[N3];
        }
    }
    else
    {
        int m = n / 2;

        if( m % 2 == 0 )
        {
            N1 = int( ( n + 1 ) * 0.25 ) - 1;
            Q1 = ( arr[N1] + arr[N1 + 1] ) / 2;
            N2 = int( ( n + 1 ) * 0.5 ) - 1;
            Q2 = arr[N2];
            N3 = int( ( n + 1 ) * 0.75 ) - 1;
            Q3 = ( arr[N3] + arr[N3 + 1] ) / 2;
        }
        else
        {
            N1 = int( ( n + 1 ) * 0.25 ) - 1;
            Q1 = arr[N1];
            N2 = int( ( n + 1 ) * 0.5 ) - 1;
            Q2 = arr[N2];
            N3 = int( ( n + 1 ) * 0.75 ) - 1;
            Q3 = arr[N3];
        }

    }

    printf( "%.1f", Q3 - Q1 );
    return 0;
}

知识点:

同上一篇~

猜你喜欢

转载自blog.csdn.net/zhao3132453/article/details/80331044
今日推荐