Card2

#include<stdio.h>
#include<stdlib.h>
//int test(int data[999])
//{
//    
//    for(int i=0;i<25;i++)
//    book[i]=0; 
//    for(int i=0;i<999;i++)
//            book[data[i]]++;
//        for(int i=12;i>=1;i--)
//        {
//            while(book[i]>=2&&book[2*i]>=1)
//            {
//                book[i]=book[i]-2;
//                book[2*i]--;
//            }
//        }
//        for(int i=1;i<=24;i++)
//        {
//            ans=ans+i*book[i];
//        }
//        return ans;
//}
//int test(int data[999])
//{
//    int ans = 0;
//    int times[25];
//    for(int i=0;i<25;i++)
//        times[i] = 0;
//
//    for(int i=0;i<999;i++)
//        times[data[i]]++;
//
//    for(int i=12;i>=1;i--)
//    {
//        while(times[i]>=2&&times[2*i]>=1)
//        {
//            times[i] -= 2;
//            times[2*i]--;
//        }
//    }
//    for(int i=1;i<25;i++)
//        ans = ans + times[i]*i;
//    return ans;
//}

int test(int data[999])
{
    int ans = 0;
    int times[25];
    for(int i=0;i<25;i++)
        times[i] = 0;

    for(int i=0;i<999;i++)
        times[data[i]]++;

    for(int i=12;i>=1;i--)
    {
        while(times[i]>=2&&times[2*i]>=1)
        {
            times[i] -= 2;
            times[2*i]--;
        }
    }

    for(int i=1;i<25;i++)
    {
        ans = ans + i * times[i];
    }
    return ans;
}







void build(int data[999]){
    for(int i=0;i<999;i++)
        data[i]=rand()%24+1;
}
void main(){
    int data[999];
    for(int l=0;l<10;l++){
        build(data);
        printf("%d
",test(data));

    }
}
原文地址:https://www.cnblogs.com/xcsllll/p/6631030.html