UVA10081 - Tight Words(dp)
来源:互联网 发布:矩阵张量积 编辑:程序博客网 时间:2024/05/14 17:22
UVA10081 - Tight Words(dp)
题目链接
题目大意:给你数字【0..k],然后要求你找出这样的序列,长度为n,并且相邻的两个数字之间的相差不能超过1.问这样的数字序列出现的概率。
解题思路:之前一直反着想这题,一心想找出相邻的的数字相差大于1的,结果发现这题还是要正着想才好写。。。还有一个问题,之前没有想到直接计算概率,而是想着统计总共有多少种,然后除以总数。结果发现9^100,好大,还差点想用大数了。。。记忆化搜索,dp[n][num]:已经排到第n个数,而且第n个数是num,那么下个数就是num,或者num - 1, 或者num + 1,如果符合【1..k]的话。
代码:
#include <cstdio>#include <cstring>const int maxn = 105;const int maxm = 10;int K, N;double p[maxn][maxm];void init () { for (int i = 0; i < maxn; i++) for (int j = 0; j < maxm; j++) p[i][j] = -1.0;}double dp(int n, int k) { double& ans = p[n][k]; if (ans != -1) return ans; if (n == N) return ans = 1.0; ans = dp(n + 1, k); if (k - 1 >= 0) ans += dp(n + 1, k - 1); if (k + 1 <= K) ans += dp(n + 1, k + 1); ans *= 1.0/(K + 1); return ans;}int main () { while (scanf ("%d%d", &K, &N) != EOF) { init(); double ans = 0; for (int i = 0; i <= K; i++) ans += dp(1, i); printf ("%.5lf\n", ans * 100.0/(K + 1)); } return 0;}
0 0
- UVA10081 - Tight Words(dp)
- UVA10081 Tight Words(dp)
- UVA10081-Tight Words(递推)
- uva 10081 - Tight Words(dp)
- UVA 10081 - Tight Words (数论 dp)
- Uva 10081 Tight words (概率DP)
- ZOJ 1883 Tight Words(概率DP)
- Tight words (dp)
- Tight Words(数位DP)
- POJ 2537 Tight words DP
- uva 10081 - Tight Words(dp)
- UVa 10081 Tight Words (DP)
- uva 10081 (Tight Words) (DP)
- fzoj 1342 Tight Words(DP:递推)
- poj 2537 Tight words 概率dp
- POJ 2537 Tight Words 继续DP之路
- UVA 10081 Tight Words
- ZOJ 1883 Tight Words
- 编写高性能的 Lua 代码
- opencv2实现10张图像上下左右拼接融合
- 多点温度采集及上位机监视系统项目经历及总结
- cobol学习之八表的建立与使用
- 4Sum
- UVA10081 - Tight Words(dp)
- Java编程思想读书笔记-5
- js的跨域
- IP地址、网络号、主机号
- Surrounded Regions
- 安卓资源
- 第8篇:swift语言笔记:属性与下标关键点
- hdu 5093 Battle ships 经典二分匹配模型
- 辣椒回锅肉、水煮鱼片