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(哈希链地址法)的更多相关文章

  1. POJ 3007 Organize Your Train part II

    题意: 如上图所示,将一个字符串进行分割,反转等操作后不同字符串的个数: 例如字符串abba:可以按三种比例分割:1:3:2:2:3:1 部分反转可以得到如下所有的字符串: 去掉重复可以得到六个不同的 ...

  2. POJ 3007 Organize Your Train part II (字典树 静态)

    Organize Your Train part II Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 6478   Acce ...

  3. poj 3007 Organize Your Train part II(二叉排序树)

    题目:http://poj.org/problem?id=3007 题意:按照图示的改变字符串,问有多少种..字符串.. 思路:分几种排序的方法,,刚开始用map 超时(map效率不高啊..),后来搜 ...

  4. poj 3007 Organize Your Train part II(静态字典树哈希)

    Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 6700 Accepted: 1922 Description RJ Freigh ...

  5. POJ 3007:Organize Your Train part II

    Organize Your Train part II Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 7561   Acce ...

  6. Organize Your Train part II 字典树(此题专卡STL)

    Organize Your Train part II Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 8787   Acce ...

  7. poj Organize Your Train part II

    http://poj.org/problem?id=3007 #include<cstdio> #include<algorithm> #include<cstring& ...

  8. Organize Your Train part II(hash)

    http://poj.org/problem?id=3007 第一次用STL做的,TLE了,自己构造字符串哈希函数才可以.. TLE代码: #include <cstdio> #inclu ...

  9. Organize Your Train part II-POJ3007模拟

    Organize Your Train part II Time Limit: 1000MS Memory Limit: 65536K Description RJ Freight, a Japane ...

随机推荐

  1. 设计模式------Adapter(适配器)

    地址:http://blog.csdn.net/wuzhekai1985/article/details/6665542,仅供学习用. 适配器:STL实现了一种数据结构,称为双端队列(deque),支 ...

  2. WebClient.UploadValues Post中文乱码的解决方法

    //using (System.Net.WebClient wc = new System.Net.WebClient()) //{ // wc.Encoding = Encoding.GetEnco ...

  3. artice与section的区别

    <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...

  4. IOS-7步学会用代理

    代理:又叫委托 自己不能去办的事委托给别人去办 之前学过的 UIAlertView UITextField都是使用了代理 反向传值代理 代理Block 写代理的步骤 需要帮忙的人(请求帮代饭的人) 1 ...

  5. 12天学好C语言——记录我的C语言学习之路(Day 3)

    12天学好C语言--记录我的C语言学习之路 Day 3: 不知不觉到了第三天的学习,我们前两天学习的东西很杂乱,各个方面都有学习.我觉得这不是不系统,也不是学的不扎实,这种学习对于初学者而言我认为是很 ...

  6. 02线性表链式存储_LinkList--(线性表)

    #include "stdio.h" #include "string.h" #include "ctype.h" #include &qu ...

  7. ERROR 2003 (HY000): Can't connect to MySQL server on 'localhost' (10061)

    http://wandering192.iteye.com/blog/758954 谢谢作者

  8. 08_XML的解析_SAX解析

    [对比SAX解析和DOM解析] * 在使用DOM解析XMl文档时,需要读取整个XML文档,在内存中架构代表整个DOM树的DOcument对象,从而对XML文档进行操作,在这种情况下,如果XML文档特别 ...

  9. ExtJs 添加员工 实例 ---- 锚点布局 anchor 可自动伸缩

    代码如下: <script type="text/javascript"> Ext.onReady(function () { // 创建一条记录行, job 为 di ...

  10. iOS 多态的简单思想

    /** * 多态:多种形态,是对于对象而言的,如果没有继承就没有多态 * * 在代码中体现:就是通过定义父类指针指向子类的对象 * * 好处:在函数或者方法的参数中如果传入的是父类指针,那么实现的时候 ...