码迷,mamicode.com
首页 > 其他好文 > 详细

UVa 10081 - Tight Words

时间:2015-08-06 15:10:50      阅读:78      评论:0      收藏:0      [点我收藏+]

标签:

題目:有一個集合{0,1,..,k},問其中元素組成的長為n的串中,相鄰元素差值不超過2的串的數比例。

分析:動態規劃、概率dp。

    初始狀態:f(i,1)= 1 /(k+1);

            狀態轉移:f(i,j)= sum(f(i-1,t))/ (k+1) { 其中,t為和j相差不超過2的元素 }。

說明:好久沒刷題了╮(╯▽╰)╭。

#include <algorithm>
#include <iostream>
#include <cstdlib>
#include <cstring>
#include <cstdio>
#include <cmath>

using namespace std;

double dp[101][10];

int main()
{
	int k, n;
	while (cin >> k >> n) {
		for (int i = 0; i <= k; ++ i)
			dp[1][i] = 1.0/(k+1);
		for (int i = 2; i <= n; ++ i)
		for (int j = 0; j <= k; ++ j) {
			dp[i][j] = 0.0;
			for (int t = 0; t <= k; ++ t) {
				if (abs(t-j) > 1) continue;
				dp[i][j] += dp[i-1][t]/(k+1);
			}
		}
		
		double sum = 0.0;
		for (int i = 0; i <= k; ++ i)
			sum += dp[n][i];
		printf("%.5lf\n",100.0*sum);
	}
    return 0;
}


版权声明:本文为博主原创文章,未经博主允许不得转载。

UVa 10081 - Tight Words

标签:

原文地址:http://blog.csdn.net/mobius_strip/article/details/47315509

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!