【UVA】10651-Pebble Solitaire(直接递归或者记忆化)
来源:互联网 发布:excel对数据分类汇总 编辑:程序博客网 时间:2024/05/17 08:15
不知道这个题UVA的数据是怎么的,用2个方法交了,第一次直接递归,第二次记忆化剪枝,时间竟然一样!?
直接郁闷了,简单的二进制表示状态和二进制运算。
1414517610651Pebble SolitaireAcceptedC++0.0092014-09-04 09:18:21
#include<cstdio>#include<algorithm>#include<string>#include<cstring>#include<map>#include<iostream>using namespace std;#define MAXD 20const int MAX_SIZE = 1 << 13;const int INF = 20;int dp[MAX_SIZE];int DP(int state){ if(dp[state] != -1) return dp[state]; dp[state] = 0; for(int i = 0 ; i < 12 ; i++)if(state & (1 << i)) dp[state] ++; for(int i = 0 ; i < 12 ; i++){ if(i > 1){ if((state & (1 << i)) && (state & (1 << (i - 1))) && !(state & (1 << (i - 2)))){ int u = state; //把第i - 2 位 从 0 变成 1,把第 i - 1 和 第 i 位 从 1 变成 0 u = u & (~(1 << i)); u = u & (~(1 << (i - 1))); u = u | (1 << (i - 2)); dp[state] = min(dp[state],DP(u)); } } if(i < 10){ if((state & (1 << i)) && (state & (1 << (i + 1))) && !(state & (1 << (i + 2)))){ int u = state; //把第i - 2 位 从 0 变成 1,把第 i - 1 和 第 i 位 从 1 变成 0 u = u & (~(1 << i)); u = u & (~(1 << (i + 1))); u = u | (1 << (i + 2)); dp[state] = min(dp[state],DP(u)); } } } return dp[state];}int main(){ int T; int n; memset(dp,-1,sizeof(dp)); scanf("%d",&T); while(T--){ char str[MAXD]; scanf("%s",str); n = 0; for(int i = 0 ; i < strlen(str) ; i++){ if(str[i] == 'o') n = n | (1 << i); } int ans = DP(n); printf("%d\n",ans); } return 0;}
0 0
- 【UVA】10651-Pebble Solitaire(直接递归或者记忆化)
- UVA 10651 Pebble Solitaire(记忆化)
- 记忆化搜索 uva-10651-Pebble Solitaire
- uva 10651 - Pebble Solitaire(记忆化搜索)
- UVa 10651 Pebble Solitaire(DP 记忆化搜索)
- uva 10651 Pebble Solitaire(动态规划:记忆化搜索)
- UVa 10651 Pebble Solitaire 记忆化搜索+位运算
- UVA 10651 Pebble Solitaire(bfs + 哈希判重(记忆化搜索?))
- uva 10651 Pebble Solitaire(dp,状态压缩,记忆化搜索)
- UVa 10651 Pebble Solitaire (DP 卵石游戏 记忆化搜索)
- 【DP】UVA 10651 Pebble Solitaire 记忆化搜索
- Pebble Solitaire(UVA 10651)
- uva10651 - Pebble Solitaire(记忆化搜索)
- uva 10651 Pebble Solitaire
- UVA 10651 Pebble Solitaire
- Uva - 10651 - Pebble Solitaire
- uva 10651 pebble Solitaire
- UVa 10651 - Pebble Solitaire
- mysql 修改root密码
- iOS 二维码扫描 zBarsdk 不支持64位 missing required architecture x86_64 in file
- hadoop mr的一些文件归属(包括临时文件的存储情况)
- 正则表达式replace理解
- 一定要对自己定位---面试的启发
- 【UVA】10651-Pebble Solitaire(直接递归或者记忆化)
- JS和JAVA中常用的编码转码函数
- camera基础知识
- Java并发-ReentrantReadWriteLock源码分析
- 【转】用Fragment创建动态的界面布局(附Android示例代码) - 小吉吉
- .net之美 张子阳
- MFC 状态栏
- secureCRT连接ubuntu问题- The remote system refused the connection
- Jstl取得字符串长度及截取字符串