ZOJ 2619 generator 【字符串+期望】

題目連接:

http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=1619

題目大意:

給定字符集大小,每次隨機產生一個字符,直到出現給定的字符串時停止。問期望長度

解題思路:

不知很清楚爲什麼這麼做,看了別人代碼。具體數學上有證明,在第二版的401的8.4FLIPPING COINS上有證明,但是本人水平太渣了,沒看懂。。。囧。最開始是用kmp+高斯消元搞的,精度怎麼改都不夠,這個原理也看不懂,我真是太弱了。

代碼:

#include<cstdio>
#include<cstring>
#include<iostream>
using namespace std;
char str[20];

bool judge(int i,int j){
    for(int k=0;str[i+k]&&str[j+k];k++){
        if(str[i+k]!=str[j+k])return false;
    }
    return true;
}

int main(){
    int T;
    scanf("%d",&T);
    int ca=1;
    while(T--){
        int n;
        scanf("%d%s",&n,str);
        long long res=0;
        for(int i=0;str[i];i++){
                if(judge(0,i))res++;
                res=res*n;
        }
        printf("Case %d:\n",ca++);
        printf("%lld\n",res);
        if(T)printf("\n");
    }
}


發佈了46 篇原創文章 · 獲贊 4 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章