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

首頁 > 學院 > 開發設計 > 正文

poj 3007 Organize Your Train part II(map)

2019-11-11 00:41:57
字體:
來源:轉載
供稿:網友

題意:

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

解題思路:

枚舉不同的拆分情況,然后用map,當然,這么耿直肯定是要超時的,但是我加了點優化,水過去了,嘻嘻。map比較慢,這題數據比較大,其實不如直接寫查找樹。

代碼:

#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++)        {   //將要用到的四種子串提前求出,避免重復操作            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;}


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 阿坝县| 理塘县| 苗栗县| 五家渠市| 拜城县| 双鸭山市| 忻州市| 浦东新区| 房山区| 江北区| 公安县| 金秀| 徐水县| 德兴市| 民县| 内乡县| 保靖县| 兴和县| 石城县| 辽宁省| 都安| 瑞安市| 板桥市| 唐河县| 大洼县| 镶黄旗| 洛浦县| 张家界市| 凤山市| 敦化市| 贡嘎县| 承德市| 昌图县| 镇赉县| 曲麻莱县| 阳春市| 阿图什市| 新建县| 资讯 | 和顺县| 佛坪县|