UVa10651(记忆化搜索)
2013-07-26 19:30
260 查看
题意:
给一串-和o组成的字符串,你可以把“-oo"变成”o--",可以把“oo-”变成“--o",问最后最少有多少个o.
状态压缩 ,记忆化搜索
code:
给一串-和o组成的字符串,你可以把“-oo"变成”o--",可以把“oo-”变成“--o",问最后最少有多少个o.
状态压缩 ,记忆化搜索
code:
#include <stdio.h> #include <string.h> #define len 12 #define min(a,b) (((a)<(b)) ?(a):(b)) int d[1<<13]; int dp(int n) { int i, t; if(d !=-1) return d ; d = 0; for(i=0; i<len; i++) if(n&(1<<i)) d ++; for(i=0; i<len-2; i++) { t = n; if( (t&(1<<i)) && (t&(1<<(i+1))) && !(t&(1<<(i+2))) ) { t &=~(1<<i); t &=~(1<<(i+1)); t |=1<<(i+2); d = min(d ,dp(t)); } if( !(t&(1<<i)) && (t&(1<<(i+1))) && (t&(1<<(i+2))) ) { t &=~(1<<(i+1)); t &=~(1<<(i+2)); t |=1<<i; d = min(d ,dp(t)); } } return d ; } int main() { int T, i, n; char str[20]; scanf("%d",&T); while(T--) { scanf("%s",str); n = 0; for(i=0; i<len; i++) if(str[i]=='o') n ^=1<<i; memset(d,-1,sizeof(d)); printf("%d\n", dp(n)); } return 0; }
相关文章推荐
- uva10651 Pebble Solitaire(记忆化搜索)
- UVa 10651 Pebble Solitaire (DP 卵石游戏 记忆化搜索)
- UVA 10651 Pebble Solitaire(bfs + 哈希判重(记忆化搜索?))
- UVa 10651 Pebble Solitaire(DP 记忆化搜索)
- uva 10651 Pebble Solitaire(动态规划:记忆化搜索)
- uva 10651 - Pebble Solitaire(记忆化搜索)
- uva 10651 Pebble Solitaire(dp,状态压缩,记忆化搜索)
- 记忆化搜索 uva-10651-Pebble Solitaire
- UVA 10651 Pebble Solitaire(bfs + 哈希判重(记忆化搜索?))
- UVa 10651 Pebble Solitaire(DP 记忆化搜索)
- uva 10651 - Pebble Solitaire(记忆化搜索)
- uva 10651 - Pebble Solitaire
- UVA - 10559 Blocks 记忆化搜索
- uva 709 - Formatting Text(记忆化搜索)
- UVa 10285 Longest Run on a Snowboard【记忆化搜索】
- UVA - 10604Chemical Reaction(记忆化搜索)
- UVa 10285 - Longest Run on a Snowboard(记忆化搜索)
- UVa 1252 - Twenty Questions(记忆化搜索,状态压缩dp)
- UVA 10651 Pebble Solitaire 状压Dp
- UVa 10651 Pebble Solitaire(状压DP)