void SwapNumber(int* a, int*b)
{
if(NULL != a && NULL !=b)
{
return;
}
int temp = *b;
*b = *a;
*a = temp;
}
int G24points(int* source, int length, int cnt)
{
if(length < 0 || NULL == source)
{
return -1;
}
if(length == cnt + 1)
{
if(24 - source[cnt] > -1e-6 && 24 - source[cnt] < 1e-6)
{
printf("Find one solution. \n");
return 0;
}
else
{
return -1;
}
}
for(int i = cnt + 1; i<length; ++i )
{
SwapNumber(&source[cnt], &source[i]);
int cntNumber = source[cnt + 1];
source[cnt + 1] = source[cnt] + cntNumber;
if( 0 == G24points(source, length, cnt + 1))
{
return 0;
}
source[cnt + 1] = source[cnt] -cntNumber;
if( 0 == G24points(source, length, cnt + 1))
{
return 0;
}
source[cnt + 1] = source[cnt] *cntNumber;
if( 0 == G24points(source, length, cnt + 1))
{
return 0;
}
if(0!=cntNumber)
{
source[cnt + 1] = source[cnt] /cntNumber;
if( 0 == G24points(source, length, cnt + 1))
{
return 0;
}
}
source[cnt+1] = cntNumber;
SwapNumber(&source[i], &source[cnt]);
}
return -1;
}
24点实现
最新推荐文章于 2020-08-22 13:38:01 发布