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;
    }
    
  • 相关阅读:
    eureka 注册中心(单机版)
    金蝶实际成本培训01
    查看WIN10内核
    金蝶K3 WISE 15.0 GUID
    win10卸载系统自带office365
    金蝶K3wise15.0BOM维护默认只能查看登录账户作为建立人的BOM清单
    阿里云邮箱代收邮件
    金蝶寄售业务流程
    转-商品流通企业代销商品核算方法
    转-ERP待检仓、代管仓、赠品仓
  • 原文地址:https://www.cnblogs.com/nanke/p/2044833.html
Copyright © 2011-2022 走看看