Top.Mail.Ru
Ответы
Аватар пользователя
Аватар пользователя
Аватар пользователя
Аватар пользователя
Программирование
+2

Программирование Golang. помогите решить срочно!!!!

Задача для тех кто хорошо справляется с курсом.

После урока про сортировки Маша решила применить полученные знания с пользой.

У неё есть тетрадка, куда она записывает всех, кому за что-нибудь благодарна. Список может быть очень длинным, но Маша его упорядочила по алфавиту (это называется - лексикографический порядок).

Помогите ей организовать быстрый поиск по этому списку.

Формат ввода
На первой строке передается количество людей в списке - натуральное число. Затем на следующих строках идет список людей. А после списка - перечень префиксов всех тех, кого надо найти. Перечень префиксов может быть произвольной длины.

Формат вывода
Для каждого префикса необходимо вывести первую фамилию с таким префиксом, или фразу Не найдено.

По дате
По рейтингу
Аватар пользователя
Ученик

если найдешь ответ можешь подсказать

Аватар пользователя
Мастер

Вот пример кода на языке программирования Golang для решения этой задачи:

123456789101112131415161718192021222324252627282930313233343536373839
 package main 
 
import ( 
	"fmt" 
	"sort" 
) 
 
func main() { 
	var n int 
	fmt.Scan(&n) 
 
	people := make([]string, n) 
	for i := 0; i < n; i++ { 
		fmt.Scan(&people[i]) 
	} 
 
	// Сортируем список людей по алфавиту 
	sort.Strings(people) 
 
	var m int 
	fmt.Scan(&m) 
 
	prefixes := make([]string, m) 
	for i := 0; i < m; i++ { 
		fmt.Scan(&prefixes[i]) 
 
		// Ищем первую фамилию с заданным префиксом 
		index := sort.Search(len(people), func(j int) bool { 
			return people[j] >= prefixes[i] 
		}) 
 
		// Проверяем, найдена ли фамилия с заданным префиксом 
		if index < len(people) && people[index][:len(prefixes[i])] == prefixes[i] { 
			fmt.Println(people[index]) 
		} else { 
			fmt.Println("Не найдено") 
		} 
	} 
} 

Вы можете использовать этот код для решения задачи. Он сначала считывает список людей, сортирует его по алфавиту, а затем считывает префиксы и использует бинарный поиск ( sort.Search ) для поиска первой фамилии с заданным префиксом. Если фамилия найдена, она выводится, иначе выводится "Не найдено".