uva10344

来源:互联网 发布:软件行业发展概况 编辑:程序博客网 时间:2024/05/22 15:41

题意:

给出5个值,求按顺序+-*是否能得到23

思路:

全排列之前必须排序,不然会wa

代码:

#include<cstdio>#include<iostream>#include<algorithm>#include<cstring>using namespace std;int flag;int arr[5];void dfs(int sum, int i) {if(sum == 23 && i==5) {flag = 1;return;}if(i>=5) return;dfs(sum+arr[i], i+1);dfs(sum-arr[i], i+1);dfs(sum*arr[i], i+1);} int main() {while(scanf("%d", &arr[0]) == 1) {int temp = 0;for(int i=1; i<5; i++) {scanf("%d", &arr[i]);if(arr[i]==0)  temp = 1;}if(temp) break;flag = 0;sort(arr, arr+5);dfs(arr[0], 1);while(next_permutation(arr, arr+5) && !flag) {dfs(arr[0], 1);}if(flag) printf("Possible\n");else printf("Impossible\n");}return 0;}


0 0
原创粉丝点击