URAL 1297 Palindrome(最長迴文子串 )

來源:互聯網
上載者:User

這個題目現在是用manacher線性演算法寫的,尾碼數組版本的還沒實現,打算過兩天搞定

還是覺得這個算髮搞定迴文問題既好寫又快

#include <iostream>#include <string.h>#include <stdio.h>using namespace std;#define MIN(a,b) (a<b?a:b)char str[2500];char rec[2500];int drome[2500];int main(){    int i,j,k;    int max_pos,pos;    while(scanf("%s",rec)!=EOF)    {        k=0;        str[k++]='@';        for(i=0;rec[i];i++)        {            str[k++]='#';            str[k++]=rec[i];        }        str[k++]='#';        str[k]=0;        drome[0]=1;        max_pos=0;        pos=0;        for(i=1;str[i];i++)        {            if(max_pos > i)            {                drome[i]=MIN(drome[pos*2-i],max_pos-i);            }            else            drome[i]=1;            for( ;str[i+drome[i]]==str[i-drome[i]];drome[i]++) ;            if(i+drome[i] > max_pos)            pos=i,max_pos=drome[i]+i;        }        max_pos=-1;        pos=0;        for(j=0;j<i;j++)        {            if(drome[j] > max_pos)            {               max_pos=drome[j];               pos=j;            }        }      //  printf("MAX:%d\n",max_pos);        max_pos;        k=pos-max_pos+1;        pos+=max_pos-1;        for(k;k<pos;k++)        if(str[k]!='#')        printf("%c",str[k]);        printf("\n");    }    return 0;}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.