poj 3007 Organize Your Train part II(map)
2017-02-07 17:21
405 查看
题意:
给一个字符串s,将s在任意一位拆开成两个子串s1, s2,可将子串翻转,然后重新连接一起形成新的字符串,可以让s2在前,问最终能形成多少个不同的字符串。
解题思路:
枚举不同的拆分情况,然后用map,当然,这么耿直肯定是要超时的,但是我加了点优化,水过去了,嘻嘻。map比较慢,这题数据比较大,其实不如直接写查找树。
代码:
给一个字符串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; }
相关文章推荐
- POJ 3007 Organize Your Train part II map+string
- poj 3007 Organize Your Train part II
- poj-3007 Organize Your Train part II
- POJ 3007 - Organize Your Train part II
- 【POJ 3007】 Organize Your Train part II (字符串HASH)
- POJ 3007 Organize Your Train part II(枚举)
- Organize Your Train part II poj 3007 枚举
- 菜鸟学算法之 POJ 3007 Organize Your Train part II
- poj 3007 Organize Your Train part II (字符串哈希)
- POJ-3007 Organize Your Train part II (字符串hash)
- POJ 3007:Organize Your Train part II
- poj 3007 Organize Your Train part II
- [POJ 3007]Organize Your Train part II[Hash][Trie]
- POJ 3007 Organize Your Train part II
- Organize Your Train part II_POJ_3007
- poj 3007 Organize Your Train part II(二叉排序树)
- Organize Your Train part II POJ 3007 (哈希&链式解决冲突)
- POJ 3007 Organize Your Train part II(Trie树)
- POJ 3007 Organize Your Train part II
- POJ Organize Your Train part II 3007