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

首頁 > 學院 > 開發(fā)設計 > 正文

poj 3007 Organize Your Train part II(map)

2019-11-11 01:27:29
字體:
供稿:網(wǎng)友

題意:

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

解題思路:

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

代碼:

#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;}


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 大宁县| 宿州市| 双辽市| 石台县| 金川县| 聂拉木县| 桃园市| 乌什县| 阿合奇县| 诸暨市| 茶陵县| 墨玉县| 闻喜县| 平乐县| 衢州市| 石狮市| 常德市| 中山市| 溧阳市| 兴化市| 呼图壁县| 司法| 龙岩市| 历史| 天峻县| 合水县| 即墨市| 长葛市| 黄陵县| 洪洞县| 绍兴县| 宜丰县| 合江县| 哈巴河县| 蓬溪县| 依安县| 北碚区| 山东| 濉溪县| 普兰县| 西乌珠穆沁旗|