栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

poj 2185 Milking Grid

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

poj 2185 Milking Grid

#include<cstdio>#include<cstring>#include<iostream>#include<vector>#include<cmath>#include<algorithm>#include<cmath>#include<cstdlib>using namespace std;const int N = 10000+10;int f[N];void getFail(char *s,int f[]) {    int m = strlen(s);    f[0] = -1;    for (int i = 1; i < m; i++) {        int j = f[i-1];        while (j != -1 && s[j+1] != s[i]) j = f[j];        if (s[j+1] == s[i]) j++;        f[i] = j;    }}int n,m;char mz[N][80];int cnt[N];int check(char *s,int x) {    int j = 0;    for (int i = 0; i < m; i++) {        if (s[i] != s[j]) return 0;        j++;        if (j > x) j = 0;    }    return 1;}void solve(int r){    f[0] = -1;    for (int i = 1; i < n; i++) {        int j = f[i-1];        while (j != -1 && strcmp(mz[j+1],mz[i])) j = f[j];        if (strcmp(mz[j+1],mz[i]) == 0) j++;        f[i] = j;    }    printf("%dn",(n - 1 - f[n-1]) * (r));}int main(){    while (~scanf("%d%d",&n,&m)) {        memset(cnt,0,sizeof(cnt));        for (int i = 0; i < n; i++) { scanf("%s",mz[i]); getFail(mz[i],f); int j = m-1; while (j != -1) {   //  cout<<m - 1 - f[j]<<endl;     cnt[m - 1 - f[j]]++;     j = f[j]; }        }        int r = 0;        for (int i = 1; i <= m; i++) if (cnt[i] == n) { r = i; break;        }        for (int i = 0; i < n; i++) { mz[i][r] = 0;        }        solve(r);    }    return 0;}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/381448.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号