- 新春回文联
- 2024-05-02 13:28:52 @
/*
动态规划照亮世界!!!
bool类型的hw[i][j]数组表示字符串第i到j位是否为回文子串
dp[i]表示0到i位最少分割串数
*/
#include<bits/stdc++.h>
using namespace std;
string st;
int dp[1005];
bool hw[1005][1005];
int main()
{
ios::sync_with_stdio(false);
cin>>st;
for(int i=0;i<st.size();i++)
hw[i][i]=true;
dp[0]=1;
for(int i=1;i<st.size();i++)
{
dp[i]=dp[i-1]+1;
for(int j=0;j<i;j++)
{
if(st[i]==st[j]&&(i-j<2||hw[j+1][i-1]))
{
hw[j][i]=true;
if(j==0) dp[i]=1;
else dp[i]=min(dp[i],dp[j-1]+1);
}
}
}
cout<<dp[st.size()-1];
return 0;
}
1 条评论
-
240901gj花子轩 (EL230810) LV 8 @ 2024-05-19 18:18:18
#include <bits/stdc++.h> using namespace std; int dp[1005]; bool check(string s,int l,int r) { while(l<r) { if(s[l]!=s[r]) { return 0; } l++; r--; } return 1; } int main() { ios::sync_with_stdio(false); string s; cin>>s; for(int i=0;i<s.size();i++) { dp[i]=dp[i-1]+1; for(int j=1;j<i;j++) { if(check(s,j,i)) { dp[i]=min(dp[i],dp[j-1]+1); } } } cout<<dp[s.size()-1]; return 0; }
为啥只对一个点啊。。。。。。(明明也是dp)
帮我看一下QVQ
- 1
信息
- ID
- 2675
- 难度
- 8
- 分类
- (无)
- 标签
- 递交数
- 28
- 已通过
- 5
- 通过率
- 18%
- 上传者