23 Out of 5 uva+回溯
来源:互联网 发布:淘宝关键词怎么优化 编辑:程序博客网 时间:2024/05/21 15:39
23 Out of 5
Input: standard input
Output: standardoutput
Time Limit: 1 second
Memory Limit: 32 MB
Your task is to writea program that can decide whether you can find an arithmetic expression consistingof five given numbers(1<=i<=5) that will yieldthe value 23.
For this problem we will only consider arithmetic expressions of the followingfrom:
where : {1,2,3,4,5} -> {1,2,3,4,5} is a bijective function
and {+,-,*} (1<=i<=4)
Input
The Input consists of 5-Tupelsof positive Integers, each between 1 and 50.
Input is terminated by a line containing five zero's. This line should not beprocessed.
Output
For each 5-Tupel print"Possible" (without quotes) if their exists an arithmetic expression(as described above) that yields 23. Otherwise print "Impossible".
Sample Input
1 1 1 1 1
1 2 3 4 5
2 3 5 7 11
0 0 0 0 0
Sample Output
Impossible
Possible
Possible
解决方案:搞了半天,原来顺序可以换的。
#include<iostream>#include<cstdio>#include<cstring>using namespace std;int a[5];bool vis[5];bool flag;void dfs(int s,int sum){ if(s==5){ if(sum==23) flag=true; return ; } for(int i=0;i<5;i++){ if(!vis[i]){ vis[i]=true; if(s==0) {dfs(s+1,a[i]);} else {dfs(s+1,sum-a[i]); dfs(s+1,sum*a[i]); dfs(s+1,sum+a[i]);} vis[i]=false; } }}int main(){ while(~scanf("%d%d%d%d%d",&a[0],&a[1],&a[2],&a[3],&a[4])&&(a[0]+a[1]+a[2]+a[3]+a[4])){ flag=false; memset(vis,false,sizeof(vis)); dfs(0,0); if(flag) cout<<"Possible\n"; else cout<<"Impossible\n"; } return 0;}
0 0
- [回溯]23 out of 5 UVA 10344
- 23 Out of 5 uva+回溯
- UVa 10344 - 23 out of 5 全排列递归回溯
- UVA 20344 23 out of 5(回溯+全排列)
- UVA 10344 - 23 Out of 5(回溯)
- UVa 10344 23 out of 5 (全排列枚举&回溯)
- UVa 10344 - 23 out of 5 递归回溯
- UVA - 10344 23 out of 5(回溯+全排列)
- UVA 23 Out of 5(DFS+回溯)
- UVA 10344 - 23 out of 5 全排列,3进制表示状态,回溯
- UVA 23 out of 5
- Uva 10344 23 out of 5
- uva 10344 - 23 out of 5
- uva 10344 - 23 out of 5
- uva-10344 - 23 out of 5
- UVa 10344 - 23 out of 5
- uva 10344 - 23 out of 5
- UVa 10344 23 out of 5
- Swift之控制流程语句
- Swift 编程语言首席架构师 Chris Lattner 简介
- PAT3-08. 堆栈模拟队列
- 那些你不知道的项目管理细节(二)
- cocos2dx 3.0 使用ant生成apk
- 23 Out of 5 uva+回溯
- POJ 2060 Taxi Cab Scheme(匈牙利—最小路径覆盖)
- c/指针函3
- 假如你收到了一封来自Twoo的邮件...
- uboot移植中的NOR FLASH配置
- POJ 1008
- 俄罗斯方块小游戏的各类
- freemarker报错之十二
- Memcached常用命令及使用说明