贡献了好几次WA
#include <iostream>
#include <string.h>#include <stdlib.h>
#include <stdio.h>
#include <algorithm>
using namespace std;
bool flag = false;
int num[5];
void dfs( int n, int res)
{
if(flag || n > 4)
return ;
if(res == 23 && n == 4)
{
flag = true;
return ;
}
dfs(n+1, res + num[n+1]);
dfs(n+1, res - num[n+1]);
dfs(n+1, res * num[n+1]);
}
int main( )
{
while(scanf("%d %d %d %d %d",&num[0] ,&num[1], &num[2], &num[3], &num[4]) != EOF)
{
if(num[0] + num[1] + num[2] + num[3] + num[4] == 0)
break;
sort(num, num + 5);
flag = false;
dfs(0, num[0]); //注意这里必须出示化成NUM[0],因为有乘法所以不能为初始化为0
if(flag)
{
printf("Possible\n");
continue;
}
while(next_permutation(num, num +5))
{
dfs(0,num[0]);
if(flag)
break;
}
if(flag)
printf("Possible\n");
else
printf("Impossible\n");
}
return 0;
}