Loan

#include <stdio.h>
#include <stdlib.h>

#define SIZE 10000
/*
int test_main(int data[SIZE][3]);
int test_main(int data[SIZE][3])
{
    int map[500]={0};
    int a=0;
    for(int i=0;i<SIZE;i++){
        for(int j=0;j<3;j++){
            data[i][j]=data[i][j]-64;
        }
    }
    for(int i=0;i<SIZE;i++){
        a=100*data[i][0]+10*data[i][1]+data[i][2];
        map[a]++;
    }
    int sum=0;
    int z=0;
    for(int i=0;i<500;i++){
        sum+=map[i];
        if(sum>1000){
            z=i;
            break;
        }
    }
    int count=0;
    for(int i=0;i<z;i++){
        count+=map[i];
    }
    return count; // the number of students who are selected to get loans 
}
*/
int test_main(int data[SIZE][3])
{
    int count=0;
    int x=0,y=0,z=0,m=0;
    int result=0;
    int repeat[500]={0};
    for(int i=0;i<SIZE;i++)
    {
        for(int j=0;j<3;j++)
        {
            data[i][j]=data[i][j]-65+1;
        }
    }

    for(int i=0;i<SIZE;i++)
    {
//        for(int j=0;j<3;j++)
//        {
            x=100*data[i][0]+10*data[i][1]+data[i][2];
            repeat[x]++;
//        }
    }

    for(int i=0;i<500;i++)
    {
        y=y+repeat[i];
        if(y>=1000){z=i;break;}
    }

    for(int i=0;i<z;i++)
    {
        result=result+repeat[i];
    }

    return result;
}



static int data[SIZE][3];

static void build_data(void)
{
    for (int c = 0; c < SIZE; c++)
    {
        data[c][0] = 'A' + (rand() % 4);
        data[c][1] = 'A' + (rand() % 4);
        data[c][2] = 'A' + (rand() % 4);
    }
}

void main(void)
{
    for (int l = 0; l < 10; l++)
    {
        build_data();

        printf("%d
", test_main(data));
    }
}
原文地址:https://www.cnblogs.com/ZzznOoooo/p/6628080.html