POJ informe Lista 3630 Teléfono resolver el trie

POJ informe Lista 3630 Teléfono resolver el trie

Ideas de resolución de problemas: construir un árbol de diccionario continuación juzgados en la línea. Para más detalles, ver el código, el tiempo de espera se dice que el uso de la asignación de espacio de malloc? Aquí con matrices estáticas. Tune mi error sintonía durante mucho tiempo, se debe tener cuidado para inicializar el puntero.
Aquí Insertar imagen Descripción

#include<iostream>
#include<math.h>
#include<iomanip>
#include<algorithm>
#include<iostream>
#include<math.h>
#include<iomanip>
#include<algorithm>
#include<queue>
#include<cstring>
#include<string>
#include<map>
#include<stack>
#include<stdio.h>
#include<cstdio>
#include<stdlib.h>
#include<fstream>
#include<iomanip>
#pragma warning(disable:4996)
#define INF 0x3f3f3f3f
#define ll long long
#define PI acos(-1.0)
const int N = 1000010;
const int maxn = 1e9;
using namespace std;
int cnt, n;
int judge;
struct node {
	int flag;
	node* next[10];
}a[100000];
void build(node* t, char str[])
{
	int len = strlen(str);
	for (int i = 0; i < len; i++)
	{
		if (t->next[str[i] - '0'] == NULL)
		{
			cnt++;
			node* tem = &a[cnt];
			for (int i = 0; i < 9; i++)
			{
				tem->next[i] = NULL;
			}
			if (i == len - 1)
				tem->flag = 2;//标记结尾
			else
				tem->flag = 1;//标记已到达过该节点
			t->next[str[i] - '0'] = tem;
			if (i == len - 1)
				return;//如果结尾处数字是新建的,直接返回
		}
		t = t->next[str[i] - '0'];
		if (t->flag == 2)//如果是之前某串数字的结尾,说明前缀重复了
			judge = 1;
		if (i == len - 1)//如果结尾处数字不是新建的,说明前缀重复了
			judge = 1;
	}
}

int main()
{
	int t;
	scanf("%d", &t);
	char ch[15] = "";
	while (t--)
	{
		judge = 0;
		memset(a, 0, sizeof(a));
		cnt = 0;
		scanf("%d", &n);
		node* temp = &a[0];//初始化头指针
		for (int i = 0; i < 9; i++)
		{
			temp->next[i] = NULL;
		}
		temp->flag = 0;
		for (int i = 0; i < n; i++)
		{
			scanf("%s", &ch);
			if (judge)
				continue;
			build(temp, ch);
			memset(ch, 0, sizeof(ch));
		}
		if (judge)
		{
			printf("NO\n");
		}
		else
		{
			printf("YES\n");
		}
	}
}



Publicado 64 artículos originales · ganado elogios 0 · Vistas 1457

Supongo que te gusta

Origin blog.csdn.net/weixin_45566331/article/details/104575167
Recomendado
Clasificación