POJ 3007 Organize Your Train part II(哈希链地址法)
http://poj.org/problem?id=3007
题意 :给你一个字符串,让你无论从什么地方分割,把这个字符串分成两部分s1和s2,然后再求出s3和s4,让你进行组合,看能出来多少种不同的形式。
思路 :记得以前的时候就听他们讨论这道题,说是用map做会超时,所以我直接就没用map。。。。但是做这道题实在是太波折了,昨天晚上改了一晚上都不对,就是不知道哪里出了问题,今早上又改,改来改去才知道原来我new node后边缺了个括号,我很懵懂,我记得不用括号也行啊,而且我看到一个AC的代码就是没用括号,但是不加就不对,终于用了链地址法改对了能运行了,交上去因为数组开小了就越界了............然后又因为忘了删掉我在代码中加的测试的输出,所以Output Limit Exceeded了一次.............
这个题主要是处理好冲突就行了。
#include <stdio.h>
#include <string.h>
#include <iostream>
#include <algorithm>
#include <stdlib.h>
#include <string>
using namespace std ; struct node
{
char ch1[] ;
struct node *next ;
}*hash[] ; int cnt ; void hashh(char *ch,char *sh)
{
char str[] ;
strcpy(str,ch) ;
strcat(str,sh) ;
int len = strlen(str) ;
int sum = ;
for(int i = ; i < len ; i++)
sum += (str[i]*i) ;
if(!hash[sum])
{
node *p= new node() ;
strcpy(p->ch1,str) ;
hash[sum] = p ;
cnt++ ;
}
else
{
node *p = hash[sum] ;
if(!strcmp(p->ch1,str)) return ;
else
{
while(p->next)
{
if(!strcmp(p->next->ch1,str)) return ;
p = p->next ;
}
node *q = new node() ;
strcpy(q->ch1,str) ;
p->next = q ;
cnt++ ;
}
}
return ;
}
int main()
{
int n ;
scanf("%d",&n) ;
char str[],str1[],str2[],str3[],str4[] ;
while(n--)
{
cnt = ;
memset(hash,,sizeof(hash)) ;
scanf("%s",str) ;
int len = strlen(str) ;
for(int i = ; i < len ; i++)
{
int j = , k = ;
for( ; j < i ; j++)
str1[j] = str[j] ;
str1[j] = '\0' ;
for(j = i ; j < len ; j++)
str2[k++] = str[j] ;
str2[k] = '\0' ;
strcpy(str3,str1) ;
strcpy(str4,str2) ;
reverse(str3,str3+i) ;
reverse(str4,str4+k) ;
// printf("%s %s %s %s\n",str1,str2,str3,str4) ;
hashh(str1,str2) ;
hashh(str3,str2) ;
hashh(str1,str4) ;
hashh(str3,str4) ;
hashh(str2,str1) ;
hashh(str2,str3) ;
hashh(str4,str1) ;
hashh(str4,str3) ;
}
printf("%d\n",cnt) ;
}
return ;
}
POJ 3007 Organize Your Train part II(哈希链地址法)的更多相关文章
- POJ 3007 Organize Your Train part II
题意: 如上图所示,将一个字符串进行分割,反转等操作后不同字符串的个数: 例如字符串abba:可以按三种比例分割:1:3:2:2:3:1 部分反转可以得到如下所有的字符串: 去掉重复可以得到六个不同的 ...
- POJ 3007 Organize Your Train part II (字典树 静态)
Organize Your Train part II Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 6478 Acce ...
- poj 3007 Organize Your Train part II(二叉排序树)
题目:http://poj.org/problem?id=3007 题意:按照图示的改变字符串,问有多少种..字符串.. 思路:分几种排序的方法,,刚开始用map 超时(map效率不高啊..),后来搜 ...
- poj 3007 Organize Your Train part II(静态字典树哈希)
Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 6700 Accepted: 1922 Description RJ Freigh ...
- POJ 3007:Organize Your Train part II
Organize Your Train part II Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 7561 Acce ...
- Organize Your Train part II 字典树(此题专卡STL)
Organize Your Train part II Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 8787 Acce ...
- poj Organize Your Train part II
http://poj.org/problem?id=3007 #include<cstdio> #include<algorithm> #include<cstring& ...
- Organize Your Train part II(hash)
http://poj.org/problem?id=3007 第一次用STL做的,TLE了,自己构造字符串哈希函数才可以.. TLE代码: #include <cstdio> #inclu ...
- Organize Your Train part II-POJ3007模拟
Organize Your Train part II Time Limit: 1000MS Memory Limit: 65536K Description RJ Freight, a Japane ...
随机推荐
- 设计模式------Adapter(适配器)
地址:http://blog.csdn.net/wuzhekai1985/article/details/6665542,仅供学习用. 适配器:STL实现了一种数据结构,称为双端队列(deque),支 ...
- WebClient.UploadValues Post中文乱码的解决方法
//using (System.Net.WebClient wc = new System.Net.WebClient()) //{ // wc.Encoding = Encoding.GetEnco ...
- artice与section的区别
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...
- IOS-7步学会用代理
代理:又叫委托 自己不能去办的事委托给别人去办 之前学过的 UIAlertView UITextField都是使用了代理 反向传值代理 代理Block 写代理的步骤 需要帮忙的人(请求帮代饭的人) 1 ...
- 12天学好C语言——记录我的C语言学习之路(Day 3)
12天学好C语言--记录我的C语言学习之路 Day 3: 不知不觉到了第三天的学习,我们前两天学习的东西很杂乱,各个方面都有学习.我觉得这不是不系统,也不是学的不扎实,这种学习对于初学者而言我认为是很 ...
- 02线性表链式存储_LinkList--(线性表)
#include "stdio.h" #include "string.h" #include "ctype.h" #include &qu ...
- ERROR 2003 (HY000): Can't connect to MySQL server on 'localhost' (10061)
http://wandering192.iteye.com/blog/758954 谢谢作者
- 08_XML的解析_SAX解析
[对比SAX解析和DOM解析] * 在使用DOM解析XMl文档时,需要读取整个XML文档,在内存中架构代表整个DOM树的DOcument对象,从而对XML文档进行操作,在这种情况下,如果XML文档特别 ...
- ExtJs 添加员工 实例 ---- 锚点布局 anchor 可自动伸缩
代码如下: <script type="text/javascript"> Ext.onReady(function () { // 创建一条记录行, job 为 di ...
- iOS 多态的简单思想
/** * 多态:多种形态,是对于对象而言的,如果没有继承就没有多态 * * 在代码中体现:就是通过定义父类指针指向子类的对象 * * 好处:在函数或者方法的参数中如果传入的是父类指针,那么实现的时候 ...