国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

poj 3007 Organize Your Train part II(map)

2019-11-11 02:38:03
字體:
供稿:網(wǎng)友

題意:

給一個(gè)字符串s,將s在任意一位拆開成兩個(gè)子串s1, s2,可將子串翻轉(zhuǎn),然后重新連接一起形成新的字符串,可以讓s2在前,問最終能形成多少個(gè)不同的字符串。

解題思路:

枚舉不同的拆分情況,然后用map,當(dāng)然,這么耿直肯定是要超時(shí)的,但是我加了點(diǎn)優(yōu)化,水過去了,嘻嘻。map比較慢,這題數(shù)據(jù)比較大,其實(shí)不如直接寫查找樹。

代碼:

#include <iostream>#include <cstdio>#include <map>#include <cstring>using namespace std;char b[88];char *rev(char a[]){    int i;    int len=strlen(a);    for(i=0; i<len; i++)    {        b[len-1-i]=a[i];    }    b[len]='/0';    return b;}int main(){    int n;    scanf("%d", &n);    int i, j;    char ntra[88], forme[88], late[88], x[88], y[88], rforme[88], rlate[88];    string str;    int ans=0;    char tra[88];    while(n--)    {        map<string, bool>vis;        ans=0;        scanf("%s", tra);        int len=strlen(tra);        for(i=1; i<=len-1; i++)        {   //將要用到的四種子串提前求出,避免重復(fù)操作            for(j=0; j<i; j++)forme[j]=tra[j];forme[j]='/0';            for(; j<len; j++)late[j-i]=tra[j];late[j-i]='/0';            strcpy(rforme,rev(forme));            strcpy(rlate,rev(late));            //0 0            strcpy(x, forme);            strcpy(y, late);//            PRintf("%s %s/n", x, y);            strcat(x, y);            str=x;//            cout<<str<<endl;            if(!vis[str]){ans++;vis[str]=true;}            strcpy(x, forme);            strcpy(y, late);            strcat(y, x);            str=y;//            cout<<str<<endl;            if(!vis[str]){ans++;vis[str]=true;}            //0 1            strcpy(x, forme);            strcpy(y, rlate);            strcat(x, y);            str=x;//            cout<<str<<endl;            if(!vis[str]){ans++; vis[str]=true;}            strcpy(x, forme);            strcpy(y, rlate);            strcat(y, x);            str=y;//            cout<<str<<endl;            if(!vis[str]){ans++; vis[str]=true;}            //1 0            strcpy(x, rforme);            strcpy(y, late);            strcat(x, y);            str=x;//            cout<<str<<endl;            if(!vis[str]){ans++; vis[str]=true;}            strcpy(x, rforme);            strcpy(y, late);            strcat(y, x);            str=y;//            cout<<str<<endl;            if(!vis[str]){ans++; vis[str]=true;}            //1 1            strcpy(x, (rforme));            strcpy(y, (rlate));            strcat(x, y);            str=x;//            cout<<str<<endl;            if(!vis[str]){ans++; vis[str]=true;}            strcpy(x, (rforme));            strcpy(y, (rlate));            strcat(y, x);            str=y;//            cout<<str<<endl;            if(!vis[str]){ans++; vis[str]=true;}//            cout<<endl;        }        printf("%d/n", ans);    }    return 0;}


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 古交市| 荃湾区| 武邑县| 正蓝旗| 宜良县| 曲周县| 定远县| 牟定县| 大埔区| 都安| 寿阳县| 普兰店市| 曲周县| 洪湖市| 云和县| 皮山县| 莱芜市| 临泽县| 靖江市| 赣州市| 靖边县| 调兵山市| 天长市| 安吉县| 苍梧县| 陇南市| 攀枝花市| 佛坪县| 浦城县| 克什克腾旗| 金湖县| 乐亭县| 阿尔山市| 南开区| 石楼县| 枣阳市| 惠来县| 丁青县| 两当县| 长阳| 云龙县|