zoukankan      html  css  js  c++  java
  • hdu1075 What Are You Talking About

    这题目真的彻底无语了,因为一个小错误,检查了半天,就是一个累加变量被我重复用了

    悲剧呀,怪不得老是输出一些莫名其妙的东西

    整体的话,这应该也算是基础的字典树吧,,就是读入数据有些技巧,嘿嘿,不过好像可以用map做哦

    前面做过一道题,就是在一个串的末尾的节点处,标记一下,而这道题,在一个串的末尾处将该串对应 的英文插入

    #include<string.h>
    #include<stdio.h>
    #include<stdlib.h>
    typedef struct node
    {
    	node* next[26];
    	char str[10];
    }*tree,t;
    tree root;
    char art[1010];
    void insert(char *s1,char *s2)
    {
    	tree p=root,newnode;
    	for(;*s2!='\0';s2++)
    	{
    		int i=*s2-'a';
    		if(p->next[i]!=NULL)
    			p=p->next[i];
    		else 
    		{
    			newnode=(tree)malloc(sizeof(t));
    			for(int j=0;j<26;j++)
    		      newnode->next[j]=NULL;//就是这里,i跟j混用了,悲剧呀,查了好久都没查出来
    	        strcpy(newnode->str,"");
    			p->next[i]=newnode;
    			p=newnode;
    		}
    	}
    	strcpy(p->str,s1);
    }
    int find(char *s1)
    {
    	tree p=root;
    	for(;*s1!='\0';s1++)
    	{
    		int i=*s1-'a';
    		if(p->next[i]!=NULL)
    			p=p->next[i];
    		else return 0;
    	}
    	if(strcmp(p->str,"")!=0)//若在字典中,则输出
    	{
    			printf("%s",p->str);
    			return 1;
    	}
    	else return 0;
    }
    int main()
    {
    	int i,n;
    	char s1[10],s2[10],s[10];
    	root=(tree)malloc(sizeof(t));
    	for(i=0;i<26;i++)
    		root->next[i]=NULL;
    	strcpy(root->str,"");
    	gets(s);
    	while(scanf("%s %s",s1,s2)!=EOF)
    	{
    		if(strcmp(s1,"END")==0)
    			break;
    		insert(s1,s2);
    	}
    	getchar();
    	while(gets(art))
    	{
    		if(strcmp(art,"END")==0)
    			break;
    		char ss[15]="";
    		int k=0;
    		for(i=0;i<strlen(art);i++)//这一步读入很有技巧
    		{
    			if(!(art[i]<='z'&&art[i]>='a'))
    			{
    				ss[k]=0;//这里也蛮关键的,相当于将字符串末尾赋结束标志
    				int flag=find(ss);
    				if(!flag)//如果字典中查不到,则直接输出
    					printf("%s",ss);
    				k=0;//记得要重新赋值为0
    				printf("%c",art[i]);
    			}
    			else ss[k++]=art[i];//将除了标点符号之外的字母先单独保存,当遇到标点符号之类的就可以送入字典去查找了
    		}
    		printf("\n");
    	}
    	return 0;
    }
    
  • 相关阅读:
    windwos8.1英文版安装SQL2008 R2中断停止的解决方案
    indwows8.1 英文版64位安装数据库时出现The ENU localization is not supported by this SQL Server media
    Server Tomcat v7.0 Server at localhost was unable to start within 45 seconds
    SQL数据附加问题
    eclipse,myeclipse中集合svn的方法
    JAVA SSH 框架介绍
    SSH框架-相关知识点
    SuperMapRealSpace Heading Tilt Roll的理解
    SuperMap iserver manage不能访问本地目的(IE9)
    Myeclipse中js文件中的乱码处理
  • 原文地址:https://www.cnblogs.com/nanke/p/2044833.html
Copyright © 2011-2022 走看看