hdu 4628 Pieces 状态压缩DP
2013-08-02 17:13
363 查看
http://acm.hdu.edu.cn/showproblem.php?pid=4628
#include <cstdio> #include <cstring> #include <iostream> #include <algorithm> using namespace std; bool is[1<<17]; int f[1<<17] , n , T , cnt , len; char ch[22] , s[22]; bool check(int m) { cnt = 0; for(int i=0;ch[i];i++) { if(m & (1<<i)) s[cnt++] = ch[i]; } for(int i=0;i<cnt/2;i++) { if(s[i] != s[cnt-1-i]) return false; } return true; } void solve() { scanf("%s" , ch); memset(is , false , sizeof(is)); len = strlen(ch); n = 1 << len; n -= 1; f = 0; for(int i=0;i<=n;i++) { if(check(i)) is[i] = true; } for(int i=n-1;i>=0;i--) { f[i] = (1<<29); for(int j=i+1;j<=n;j = (j+1)|i) { if(is[j-i]) { f[i] = min(f[i] , f[j] + 1); } } } printf("%d\n" , f[0]); } int main() { scanf("%d" , &T); while(T--) { solve(); } return 0; }
相关文章推荐
- hdu 4628 Pieces(状态压缩DP)
- hdu 4628 Pieces (状态压缩+二进制枚举+dp)
- hdu 4628 Pieces(状态压缩+DP,4级)
- hdu 4628 Pieces 状态压缩DP
- HDU 4628 Pieces(DP + 状态压缩)
- HDU 4628 Pieces(状态压缩dp)
- hdu 4628 Pieces (状态压缩dp)
- hdu - 4628 - Pieces(状态压缩dp)
- hdu 4628 Pieces (状态压缩dp)
- HDU 4628 Pieces(状态压缩DP)
- HDU4628+状态压缩DP
- hdu 4628 - Pieces(压缩dp)
- hdu 4628 Pieces(状态压缩+记忆化搜索)
- HDU4628+状态压缩DP
- hdu 4628 Pieces(状态压缩+记忆化搜索)
- HDU 4628 Pieces(状态压缩+记忆化搜索)
- hdu 4628(状态压缩dp)
- HDOJ 4628 - Pieces 状态压缩DP..枚举所有子集进行更新
- hdu 4628 状态压缩dp
- HDU 6006 Engineer Assignment(状态压缩dp)