hdu 4628Pieces
来源:互联网 发布:复杂网络上的博弈 编辑:程序博客网 时间:2024/06/06 02:52
采用集合的方式进行判断,判断所有的子字符串情况,看是否符合回文
#include <cstdio>#include <cstring>#include <algorithm>using namespace std;int len;int f[(1<<16)+2];char s[18];void solve (int n){ char str[18]; for(int i=1; i<len; ++i) { int p=0; for(int j=0; j<n; ++j) if(i&(1<<j)) str[p++]=s[j]; bool flag=0; for(int j=0; j<p/2; ++j) if(str[j]!=str[p-j-1]) { flag=1; break; } if(flag) f[i]=p; else f[i]=1; }}int main(){ // freopen("in.txt","r",stdin); int t; scanf("%d",&t); while(t--) { scanf("%s",s); int n=strlen(s); len=1<<n; solve(n); for(int i=1; i<len; ++i) for(int s0=i; s0; s0=(s0-1)&i) f[i]=min(f[i],f[s0]+f[i^s0]); printf("%d\n",f[(1<<n)-1]); } return 0;}#include <cstdio>#include <cstring>#include <algorithm>using namespace std;int len;int f[(1<<16)+2];char s[18];int solve (int cur,int n){ char str[18]; int p=0; for(int i=0;i<n;++i) if(cur&(1<<i)) str[p++]=s[i]; for(int i=0;i<p/2;++i) if(str[i]!=str[p-i-1]) return p; return 1;}int main(){ //freopen("in.txt","r",stdin); int t; scanf("%d",&t); while(t--) { scanf("%s",s); int n=strlen(s); len=1<<n; for(int i=1;i<len;++i) f[i]=solve(i,n); for(int i=1; i<len; ++i) for(int s0=i; s0; s0=(s0-1)&i) f[i]=min(f[i],f[s0]+f[i^s0]); printf("%d\n",f[(1<<n)-1]); } return 0;}
- HDU 4628 Pieces
- HDU 4628 Pieces
- Hdu 4628 Pieces
- hdu 4628 Pieces
- Pieces hdu 4628
- HDU 4628 Pieces
- hdu(4628)Pieces
- HDU-4628-Pieces
- hdu 4628 Pieces
- hdu 4628 Pieces
- hdu 4628Pieces
- HDU 4628 Pieces 解题报告
- hdu 4628 - Pieces(压缩dp)
- hdu 4628 ——Pieces
- HDU 4628——Pieces
- hdu 4628 Pieces 集合DP
- [kmp+dp] hdu 4628 Pieces
- [状压dp] hdu 4628 Pieces
- 升级ios7的时候遇到CCLabelTTF有些内容不能显示
- LIB和DLL的区别与使用
- Xcode分析CrashLog的方法
- java eclipse 生成注释
- php上传思路很重要 举一反三
- hdu 4628Pieces
- 大整数乘法原理(JAVA)
- Android的数据存储--SharedPreferences
- 0927
- 通过ATL开发COM概述
- 在Mac OS X中配置Apache + PHP + MySQL
- Hibernate多对多映射为第三张表manytomany【xml和注解】实例(十七)
- ListEntry 链表图解,及解析 InsertTailList & RemoveHeadList&RemoveEntryList函数
- 《程序员》 -- 对国内云计算三个现象的思考