hihocoder 1304 : 搜索一·24点(DFS+回溯)
来源:互联网 发布:无线传感器网络 编辑:程序博客网 时间:2024/06/07 05:02
深搜判断是否存在解。若当前不存在解,需返回之前的状态。
通过2层循环,处理运算顺序不同的情形。
#include "bits/stdc++.h"//hiho98using namespace std;const int CardsNumber = 4;const int ResultValue = 24;double number[CardsNumber];bool PointsGame(int n){if(n == 1){//cout<<number[0]<<endl;if(fabs(number[0]-24.) <1e-3 )return true;elsereturn false;}for(int i = 0; i < n; i++){for(int j = i + 1; j < n; j++){double a = number[i], b = number[j];number[j] = number[n - 1];//压缩卡数number[i] = a + b;if(PointsGame(n - 1))return true;number[i] = a - b;if(PointsGame(n - 1))return true;number[i] = b - a;if(PointsGame(n - 1))return true;number[i] = a * b;if(PointsGame(n - 1))return true;if(b != 0){number[i] = a / b;if(PointsGame(n - 1))return true;}if(a != 0){number[i] = b / a;if(PointsGame(n - 1))return true;}//回朔number[i] = a;number[j] = b;}}return false;}int main(){//65 74 81 75//'A','J','Q','K'// 1 11 12 13int i;int t;scanf("%u",&t);while(t--){for(i=0; i<CardsNumber; ++i){scanf("%lf",&number[i]); //确实应当用浮点数存储,考虑除法的情况}if(PointsGame(CardsNumber)){cout << "Yes" << endl;}else{cout << "No" << endl;}}return 0;}
0 0
- hihocoder 1304 : 搜索一·24点(DFS+回溯)
- hihoCoder--1304 搜索一·24点
- hihocoder 1304 : 搜索一·24点
- hihoCoder 搜索一·24点
- hihoCoder 搜索一·24点
- 搜索一·24点---dfs
- Hihocoder第九十八周 搜索一·24点
- hihoCoder搜索专题1---24点
- HIHO #1304 : 搜索一·24点
- 搜索一·24点
- DFS搜索 --- HihoCoder 1168 Transport
- hihocoder 1183 : 连通性一·割边与割点
- hihocoder #1183 : 连通性一·割边与割点
- BFS广度优先搜索 DFS深度优先搜索 回溯算法
- hiho一下 第九十八周 #1304 : 搜索一·24点 【此方法好巧妙呀---用来求24点】
- hiho 98 搜索一 24点
- 搜索算法科普型入门文章--Bfs,Dfs和回溯
- POJ 1321 棋盘问题(DFS深度优先搜索/回溯法)
- JS 性能优化工具 Facebook Prepack
- Odoo10 开发者文档(2)--建立一个网站
- CTF逆向工程入门_2
- mkimage使用详解
- AsyncTask
- hihocoder 1304 : 搜索一·24点(DFS+回溯)
- linux 文本处理命令cat
- 474. Ones and Zeroes
- hihoCoder
- 基于socket通信的局域网聊天室搭建(socket通信第四弹)
- Direct3D 光照练习
- C++ map的基本操作
- hihoCoder
- 计算语言学之语法理论