博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hdu 1671
阅读量:5317 次
发布时间:2019-06-14

本文共 1720 字,大约阅读时间需要 5 分钟。

Trie树,题目不难,但还是WA了一次,没有考虑后输入的字符串是前输入的字符串的前缀的情况,真是太粗心了。不过做了几道Trie树的题目以后,代码写得还是比较通用了,慢慢再改进吧

/*  * hdu1671/win.c  * Created on: 2011-8-19  * Author    : ben */ #include 
#include
#include
#include
#define CHAR_NUM 10 #define BASE '0' typedef struct Trie {
unsigned char isaend; struct Trie * br[CHAR_NUM]; } Trie; int flag; Trie* newTrieNode() {
int i; Trie* node = (Trie *) malloc(sizeof(Trie)); for (i = 0; i < CHAR_NUM; i++) {
node->br[i] = NULL; } node->isaend = 0; return node; } void insert(Trie *root, char *str, int len) {
int i; if (root->isaend) {
flag = 0; } if (len <= 0) {
root->isaend = 1; for (i = 0; i < CHAR_NUM; i++) {
if(root->br[i]) {
flag = 0; return ; } } return; } i = (*str) - BASE; if (!root->br[i]) {
root->br[i] = newTrieNode(); } insert(root->br[i], str + 1, len - 1); } void destroy(Trie *root) {
int i; for (i = 0; i < CHAR_NUM; i++) {
if (root->br[i] != NULL) {
destroy(root->br[i]); } } free(root); } void work() {
Trie *root = newTrieNode(); int n; char str[100]; scanf("%d", &n); flag = 1; while (n--) {
scanf("%s", str); insert(root, str, strlen(str)); } if (flag) {
puts("YES"); } else {
puts("NO"); } destroy(root); } int main() {
#ifndef ONLINE_JUDGE freopen("data.in", "r", stdin); #endif int T; scanf("%d", &T); while (T--) {
work(); } return 0; }

转载于:https://www.cnblogs.com/moonbay/archive/2011/08/19/2146199.html

你可能感兴趣的文章
MyEclipse中将普通Java项目convert(转化)为Maven项目
查看>>
node js 安装.node-gyp/8.9.4 权限 无法访问
查看>>
windows基本命令
查看>>
VMware中CentOS设置静态IP
查看>>
[poj1006]Biorhythms
查看>>
Hyper-V虚拟机上安装一个图形界面的Linux系统
查看>>
Hover功能
查看>>
js千分位处理
查看>>
Mac---------三指拖移
查看>>
字符串类型的相互转换
查看>>
HTTP状态码
查看>>
iOS如何过滤掉文本中特殊字符
查看>>
基础学习:C#中float的取值范围和精度
查看>>
MongoDB-CRUD
查看>>
javaagent 简介
查看>>
python升级安装后的yum的修复
查看>>
Vim配置Node.js开发工具
查看>>
web前端面试题2017
查看>>
ELMAH——可插拔错误日志工具
查看>>
MySQL学习笔记(四)
查看>>