if sum of the two cards of the same number is identical with the number in another card,you can remove these three cards.
in otner words,if there are cards as follows:
2 4 7 3 3 6 2 8
as 2 +2=4,three of the cards can be removed.
finally,two cards of 7,8 remained .therefore ,return 15=7+8.
there is no fixed orders to rermove cards.
code:
#include <stdio.h>
#include <stdlib.h>
int test_main(int data[8]);
void build_data(int data[999])
{
for(int i=0;i<999;i++)
{
data[i]=rand()%24+1;
}
}
void main(void)
{
int data[8]={2,4,7,3,3,6,2,8};
for(int l=0;l<10;l++)
{
//build_data(data);
printf("%d
",test_main(data));
}
return ;
}
int test_main(int data[8])
{
int i,n,sum,p;
int times[25]={0};
for(i=0;i<8;i++)//每个数字出现的次数
{
times[data[i]]++;
}
for(n=12;n>0;n--)
{
while(times[2*n]>=1&×[n]>=2)
{
times[n]=times[n]-2;
times[2*n]--;
}
}
for(p=1,sum=0;p<=24;p++)
{
sum=sum+p*times[p];
}
return sum;
}