国产探花免费观看_亚洲丰满少妇自慰呻吟_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ā)表
主站蜘蛛池模板: 恩施市| 广宗县| 双流县| 甘肃省| 察哈| 岳池县| 新乡市| 延边| 清新县| 竹北市| 宝清县| 常德市| 克什克腾旗| 建昌县| 庆元县| 北京市| 乌鲁木齐市| 监利县| 福建省| 班玛县| 太白县| 达州市| 东阳市| 昭苏县| 鄂托克旗| 满城县| 娄烦县| 巩义市| 体育| 鸡泽县| 印江| 兰坪| 灌阳县| 牙克石市| 漳州市| 恭城| 彭山县| 郓城县| 环江| 阿瓦提县| 栖霞市|