题解 | #24点游戏算法#
24点游戏算法
http://www.nowcoder.com/practice/fbc417f314f745b1978fc751a54ac8cb
#include <stdio.h>
int v[4] = {0};
static int dfs(int *array, int total)
{
if(total == 24)
{
return 1;
}
for(int i = 0; i < 4; i++)
{
if(v[i] == 0) //表示还未找到
{
v[i] = 1; //表示已经找到
if(dfs(array, total+array[i])
|| dfs(array, total-array[i])
|| dfs(array, total*array[i])
|| dfs(array, total/array[i])
)
{
return 1;
}
else
{
v[i] = 0; //若不是,则回退为未找到
}
}
}
return 0;
}
int main()
{
int array[4] = {0};
for(int i = 0; i < 4; i++)
{
scanf("%d", &array[i]);
}
int total = array[0]; //最终的和
v[0] = 1; //表示从0开始找
if(dfs(array, total) == 1)
{
printf("true\n");
}
else
{
printf("false\n");
}
return 0;
}