UVA1637DoublePatience
来源:互联网 发布:linux内存管理源码 编辑:程序博客网 时间:2024/06/05 01:54
//UVA1637DoublePatience#include<cstdio>#include<cstring>#include<vector>#include<map>using namespace std;char input[9][4][3];map<vector<int>, double> d;double dp(vector<int>& cnt, int c) {//c记录剩余牌的数量//多阶段决策 if(c == 0) return 1;//可能性为1if(d.count(cnt)) return d[cnt];//记忆化搜索 int tot = 0;double sum = 0;for(int i = 0; i < 9; i++) {if(cnt[i] > 0)for(int j = i + 1; j < 9; j++) if(cnt[j] > 0) { if(input[i][cnt[i] - 1][0] == input[j][cnt[j] - 1][0]) { tot++;//可行方案数+1 cnt[i]--; cnt[j]--; sum += dp(cnt, c - 2); cnt[i]++; cnt[j]++; }} } if(tot < 1) return d[cnt] = 0;//可能性为0 else return d[cnt] = sum / tot;}bool In() {for(int i = 0; i < 9; i++) {for(int j = 0; j < 4; j++) {if(scanf("%s", input[i][j]) != 1) return false;}//值得学习的输入技巧 }return true;}int main() {while(In()) {d.clear();vector<int> cnt(9, 4);//记录每堆剩余的牌的数量//初始化为9个值均为4的元素,比用数组便捷 printf("%.6lf\n", dp(cnt, 36));}return 0;}/*AS 9S 6C KSJC QH AC KH7S QD JD KDQS TS JS 9H6D TD AD 8SQC TH KC 8D8C 9D TC 7C9C 7H JH 7D8H 6S AH 6H*/
阅读全文
0 0
- UVA1637DoublePatience
- pstack
- 值得推荐的C/C++框架和库
- 设计模式之工厂模式
- 查
- 报错 : CRTC 63 尝试模式 CRTC 63:尝试 800x600@60Hz 模式输出在 1366x768@60Hz (通过 0)
- UVA1637DoublePatience
- 注册表 修改不了
- 关于xcode删除target时崩溃的问题
- python中模块导入语句 from ..import ..与from import as的区别
- Python-os模块详解
- 抓住业务核心,避免过度抽象
- 这是一篇 观后感--英语课堂
- About AF_NETLINK in Linux Socket
- Hdu 1695