HDU 1075 What Are You Talking About(Tire树)

本文介绍了一个基于字符串匹配的算法实现,通过构建特定的数据结构来高效地处理文本中的词汇查找问题。该算法使用一种树状结构存储词汇,并实现了插入、查找等功能,能够用于文本搜索等应用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目链接

写的太渣了,依旧RE了几次。。。

  1 #include <stdio.h>
  2 #include <string.h>
  3 #include <stdlib.h>
  4 char str[500001][101];
  5 char word[500001];
  6 char ch[5001];
  7 struct node
  8 {
  9     int flag;
 10     struct node *next[26];
 11 };
 12 int num = 1;
 13 struct node *build()
 14 {
 15     int i;
 16     struct node *p;
 17     p = (struct node *)malloc(sizeof(struct node));
 18     for(i = 0;i <= 25;i ++)
 19     p -> next[i] = NULL;
 20     return p;
 21 }
 22 void insert(struct node *head,char *str1)
 23 {
 24     int i;
 25     struct node *p;
 26     p = head;
 27     for(i = 0;str1[i];i ++)
 28     {
 29         if(p -> next[str1[i]-'a'] == NULL)
 30         {
 31             p -> next[str1[i]-'a'] = build();
 32         }
 33         p = p -> next[str1[i] - 'a'];
 34     }
 35     p -> flag = num;
 36 }
 37 int find(struct node *head,char *s)
 38 {
 39     int i,j,len;
 40     struct node *p;
 41     p = head;
 42     len = strlen(s);
 43     for(i = 0;i <= len;i ++)
 44     {
 45         if(s[i] >= 'a'&&s[i] <= 'z')
 46         {
 47             if(p -> next[s[i]-'a'] == NULL)
 48             {
 49                 for(j = 0;j <= i;j ++)
 50                 {
 51                     printf("%c",s[j]);
 52                 }
 53                 return i;
 54             }
 55             else
 56             p = p -> next[s[i]-'a'];
 57         }
 58         else
 59         {
 60             if(p -> flag > 0&&p ->flag <= num-1)
 61             {
 62                 printf("%s",str[p->flag]);
 63                 return i-1;
 64             }
 65             else
 66             {
 67                 for(j = 0;j <= i-1;j ++)
 68                 {
 69                     printf("%c",s[j]);
 70                 }
 71                 return i-1;
 72             }
 73         }
 74     }
 75     return i-1;
 76 }
 77 void search(struct node *head,char *str1)
 78 {
 79     int i,len;
 80     len = strlen(str1);
 81     for(i = 0;i <= len-1;i ++)
 82     {
 83         if(str1[i] <= 'z'&&str1[i] >= 'a')
 84         {
 85             i += find(head,str1+i);
 86         }
 87         else
 88         printf("%c",str1[i]);
 89     }
 90     printf("\n");
 91 }
 92 int main()
 93 {
 94     struct node *head;
 95     head = build();
 96     for(;;)
 97     {
 98         scanf("%s%*c",ch);
 99         if(strcmp("END",ch) == 0)
100         break;
101         if(strcmp("START",ch)!= 0)
102         {
103             scanf("%s%*c",word);
104             strcpy(str[num],ch);
105             insert(head,word);
106             num ++;
107         }
108     }
109     for(;;)
110     {
111         gets(word);
112         if(strcmp("END",word) == 0)
113         break;
114         if(strcmp("START",word)!= 0)
115         {
116             search(head,word);
117         }
118     }
119     return 0;
120 }

转载于:https://www.cnblogs.com/naix-x/archive/2012/08/13/2636973.html

内容概要:本文档详细介绍了基于MATLAB实现多目标差分进化(MODE)算法进行无人机三维路径规划的项目实例。项目旨在提升无人机在复杂三维环境中路径规划的精度、实时性、多目标协调处理能力、障碍物避让能力和路径平滑性。通过引入多目标差分进化算法,项目解决了传统路径规划算法在动态环境和多目标优化中的不足,实现了路径长度、飞行安全距离、能耗等多个目标的协调优化。文档涵盖了环境建模、路径编码、多目标优化策略、障碍物检测与避让、路径平滑处理等关键技术模块,并提供了部分MATLAB代码示例。 适合人群:具备一定编程基础,对无人机路径规划和多目标优化算法感兴趣的科研人员、工程师和研究生。 使用场景及目标:①适用于无人机在军事侦察、环境监测、灾害救援、物流运输、城市管理等领域的三维路径规划;②通过多目标差分进化算法,优化路径长度、飞行安全距离、能耗等多目标,提升无人机任务执行效率和安全性;③解决动态环境变化、实时路径调整和复杂障碍物避让等问题。 其他说明:项目采用模块化设计,便于集成不同的优化目标和动态环境因素,支持后续算法升级与功能扩展。通过系统实现和仿真实验验证,项目不仅提升了理论研究的实用价值,还为无人机智能自主飞行提供了技术基础。文档提供了详细的代码示例,有助于读者深入理解和实践该项目。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值