hdu 5791 Two dp
来源:互联网 发布:exe软件重新编译 编辑:程序博客网 时间:2024/05/16 13:57
题目链接:这里
题意:给你两个数组,问你公共子序列的数量是多少
解法:dp[i][j]表示第一个串考虑到i位,第二个串考虑到j位的答案是多少
那么dp[i][j] = dp[i-1][j]+dp[i][j-1]-dp[i-1][j-1]
如果a[i]=b[j],dp[i][j]+=dp[i-1][j-1]+1
//HDU 5791#include <bits/stdc++.h>using namespace std;const int mod = 1e9+7;int dp[1010][1010];//代表第一个串在i位置,第二个串在j位置的方案数int n, m, a[1010], b[1010];int main(){ while(scanf("%d%d", &n, &m) != EOF) { memset(dp, 0, sizeof(dp)); for(int i = 1; i <= n; i++) scanf("%d", &a[i]); for(int i = 1; i <= m; i++) scanf("%d", &b[i]); for(int i = 1; i <= n; i++){ for(int j = 1; j <= m; j++){ dp[i][j] = dp[i-1][j] + dp[i][j-1] - dp[i-1][j-1]; if(a[i] == b[j]) dp[i][j] += dp[i-1][j-1] + 1; if(dp[i][j] < 0) dp[i][j] += mod; if(dp[i][j] >= mod) dp[i][j] %= mod; } } printf("%d\n", dp[n][m]); } return 0;}
0 0
- HDU 5791 Two(DP)
- HDU-5791-TWO-DP
- HDU 5791 Two DP
- HDU 5791 Two ( DP )
- hdu 5791 Two dp
- hdu 5791 Two (dp)
- HDU-5791-Two(DP)
- HDU 5791 Two (DP)
- HDU 5791 Two(dp)
- hdu 5791 Two dp(多校)
- hdu 5791 Two n^2 dp
- HDU 5791 Two——DP
- hdu 6170 Two strings dp
- hdu 6170 Two strings(DP)
- HDU 6170(Two strings-DP)
- hdu 6170 Two strings(dp)
- HDU 5791 Two (dp求公共子序列个数)
- HDU 4753 Two Rabbits(区间DP)
- Windows 7 64位安装TenSorFlow
- mongodb(一)-- mongodb简介
- Weka-filter类-选择样本[5]
- Freeswitch配置之sofia
- activemq安装部署发送接收消息
- hdu 5791 Two dp
- 3 Slot PCI Expansion
- Spring基于xml的构造方法注入&setter注入
- Libevent源码分析-----TAILQ_QUEUE队列
- 慕课-程序设计与算法(大学先修课)-郭炜-第七周练习题
- java中取得文件夹中所有文件的名字
- 编程小结(1)
- Win7 PC无法识别android手机 / adb interface有黄色感叹号
- php获取路径:getcwd()、__DIR__、__FILE__ 的区别