1 条题解
-
0
C++ :
#include <iostream> #include <cstdio> #include <cstring> using namespace std; char s[101]; int f[101][101]; bool u[101][101]; bool jud(int l,int r,int cl,int cr) { if((r-l+1)%(cr-cl+1)) return false; for(int i=l;i<=r;i++) { if(s[i]!=s[(i-l)%(cr-cl+1)+cl]) return false; } return true; } int match(int x) { int t=0; while(x) { x/=10; t++; } return t; } int dp(int l,int r) { if(l==r) { return 1; } else { if(u[l][r]) { return f[l][r]; } else { u[l][r]=1; int t=r-l+1; for(int i=l;i<r;i++) { t=min(t,dp(l,i)+dp(i+1,r)); if(jud(i+1,r,l,i)) { t=min(t,dp(l,i)+2+match((r-i)/(i-l+1)+1)); } } return f[l][r]=t; } } } int main() { scanf("%s",s); printf("%d",dp(0,strlen(s)-1)); return 0; }
- 1
信息
- ID
- 838
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- (无)
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者