博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
gym-101343B-So You Think You Can Count?
阅读量:5268 次
发布时间:2019-06-14

本文共 925 字,大约阅读时间需要 3 分钟。

 

1 /* 2 把一个字符串分成若干段,每一段里面的字符不能重复,问有多少种分法 3 动态规划,定义dp 表示字符串前n个字母的分法种数,先预处理字符串,对于每个字符, 4 计算出以这个字符为结尾的无重复字符的一段最长的长度,第i个字符对应的长度记为f[i] 5 然后可以得出递推式: 6 dp[0]=1; 7 dp[i]=dp(i-j) (1<=j<=f[i]) 8 */ 9 #include 
10 using namespace std;11 int dp[10005];12 int f[10005];13 bool vis[10];14 const int mod=1e9+7;15 int main()16 {17 string s;18 int n;19 cin>>n>>s;20 memset(dp,0,sizeof(dp));21 memset(f,0,sizeof(f));22 for(int i=0;i
=0;j--)27 {28 if(vis[s[j]-'0'])29 break;30 cnt++;31 vis[s[j]-'0']=1;32 }33 f[i+1]=cnt;34 }35 dp[0]=1;36 for(int i=1;i<=n;i++)37 {38 int sum=0;39 for(int j=1;j<=f[i];j++)40 {41 sum=(sum+dp[i-j])%mod;42 }43 dp[i]=sum;44 }45 cout<
<

 

转载于:https://www.cnblogs.com/kearon/p/7214814.html

你可能感兴趣的文章
java.io.IOException: read failed, socket might closed or timeout, read ret: -1
查看>>
java 常用命令
查看>>
51nod1076 (边双连通)
查看>>
Linux pipe函数
查看>>
java equals 小记
查看>>
2019春 软件工程实践 助教总结
查看>>
Zerver是一个C#开发的Nginx+PHP+Mysql+memcached+redis绿色集成开发环境
查看>>
java实现哈弗曼树
查看>>
程序的静态链接,动态链接和装载 (补充)
查看>>
关于本博客说明
查看>>
HDU 2548 A strange lift
查看>>
Linux服务器在外地,如何用eclipse连接hdfs
查看>>
react双组件传值和传参
查看>>
[Kaggle] Sentiment Analysis on Movie Reviews
查看>>
价值观
查看>>
mongodb命令----批量更改文档字段名
查看>>
MacOS copy图标shell脚本
查看>>
国外常见互联网盈利创新模式
查看>>
Oracle-05
查看>>
linux grep 搜索查找
查看>>