Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
0 / 0 / 0
Регистрация: 09.05.2015
Сообщений: 10

Создание цепочки "городов" максимальной длины

31.05.2015, 23:56. Показов 2365. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте! В универе дали такое задание: написать программу, которая из набора названий городов (все названия разные) строит цепочку максимальной длины. При реализации программы используйте коллекции. Я попробовала сама написать, и вот что получилось:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
package cities;
 
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
 
/**
 *
 * @author Svetlana
 */
public class Cities {
 
    /**
     * @param args the command line arguments
     * @throws java.io.FileNotFoundException
     */
    public static void main(String[] args) throws FileNotFoundException, IOException {
//класс Exempliar  - экземпляр города, содержит line - само название города, first  - первая буква названия, last - последния буква названия(не ь,ъ,ы)
        List<Exempliar> list = new ArrayList<>();
        String cities_file = "путь к файлу";
        BufferedReader myfile = new BufferedReader(new InputStreamReader(new FileInputStream(cities_file), "Cp1251"));
        String l = null;
        while ((l = myfile.readLine())!=null){
            Exempliar ex = new Exempliar(l);
            list.add(ex);
        }
        List <List<Exempliar>> result = new ArrayList<>();//все наборы строк всех возможных длин(от 2 до длины списка городов)
        List<Exempliar> fortry = new ArrayList<>();
        int s=0;
        for(int i =2;i<list.size();i++){
            cicles(s,i, list.size(),result,fortry,list);
        }
        System.out.println(result.size()); 
        List <Exempliar> res = new ArrayList<>();
        int length = 0;
        boolean check = true;
        for (List<Exempliar> result1 : result) {
            if (result1.size() > length) {
                for (int j = 0; j < result1.size() - 1; j++) {
                    if (result1.get(j).last != result1.get(j+1).first) {
                        check =false;
                        break;
                    }
                }
                if (check) {
                    res.clear();
                    res.addAll(result1);
                    length = result1.size();
                }
            }
        }
        
       for (Exempliar re1 : res) {
            System.out.print(re1.line + " ");
        }
    }
    
    //функция, которая с помощью циклов перебирает все возможные наборы
    public static void cicles(int skolko, int length, int until, List<List<Exempliar>> listtoadd, List<Exempliar> list,List<Exempliar> wheretotake){
        for(int i = 0;i < length;i++){
            if (skolko==until){
                skolko=0;
                listtoadd.add(list);
                break;
            }
            List <Exempliar> list1 = new ArrayList<>();
            list1.addAll(list);
            list1.add(wheretotake.get(i));
            skolko++;
            cicles(skolko, length, until, listtoadd, list1 ,wheretotake);
        }
    
    }
}
Однако, как и ожидалось, она работает совсем неверно=(
Подскажите, пожалуйста, что необходимо поменять. Я бы сама нашла, дня через 3, но дедлайн во вторник=(
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
31.05.2015, 23:56
Ответы с готовыми решениями:

Поиск максимальной длины цепочки 'LDR' в файле
Текстовый файл состоит не более чем из 106 символов L, D и R. Определите максимальную длину цепочки вида LDRLDRLDR... (составленной из...

Из набора названий городов построить цепочку максимальной длины
Задача: Широко известна игра &quot;Города&quot;. Называется какой-нибудь город, допустим, &quot;Саратов&quot;. Кончается на &quot;в&quot;, значит...

Найти слово максимальной длины в одной строке и поменять со словом максимальной длины другой строки
Найти слово максимальной длины в одной строке и поменять со словом максимальной длины другой строки..Помогите реализовать с помощью типа...

4
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7392 / 4819 / 1246
Регистрация: 30.03.2015
Сообщений: 13,694
Записей в блоге: 29
01.06.2015, 16:04
Цитата Сообщение от Svetlana2403 Посмотреть сообщение
как и ожидалось, она работает совсем неверно
обычно принято рассчитывать на успех)
Цитата Сообщение от Svetlana2403 Посмотреть сообщение
Подскажите, пожалуйста, что необходимо поменять.
ну например зачем заводить класс Экземпляр если можно просто в Лист все города записать и потом уже пытаться выстроить цепочку?
Я верно понял что цепочка -это последовательность названий, когда новый город начинается на ту букву на которую заканчивается предыдущий?
0
0 / 0 / 0
Регистрация: 09.05.2015
Сообщений: 10
01.06.2015, 19:03  [ТС]
Задание Вы поняли верно, цепочка -это последовательность названий, когда новый город начинается на ту букву, на которую заканчивается предыдущий. Класс Экземпляр был введен для удобства доставания первой и последней букв, ведь последняя буква может быть 'ь', и тогда надо рассматривать предпоследнюю букву
В итоге операции все ведутся именно с названиями городов в Листе, просто их необходимо дополнительно доставать.
0
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7392 / 4819 / 1246
Регистрация: 30.03.2015
Сообщений: 13,694
Записей в блоге: 29
01.06.2015, 21:55
Лучший ответ Сообщение было отмечено Svetlana2403 как решение

Решение

не идеально и без коллекций, но сама можешь допилить, например Аррайлистом сделай
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
 String[] cities = new String[]{"Москва", "Пермь", "Архангельск", "Владивосток", "Дрезден", "Новгород",
                "Орел", "Анапа", "Калиниград", "Мадрид", "Ессентуки", "Липецк", "Кострома", "Кельн", "Новороссийск",
                "Коломна", "Душанбе", "Алапаевск", "Киров"}; //тут ты можешь просто с файла в массив считать
        int max = 0; //максимальная длина строки
        String result = ""; //результирующая последовательность
        for (int o = 0; o <cities.length ; o++) { 
        String bigS = cities[o]; //выбираем первый город в цепочке
        for (int i = 0; i < cities.length; i++) {
            int razm = 0;
            char ch = Character.toTitleCase(bigS.charAt(bigS.length() - 1));
            if (ch=='Ь') { //если на конце мягкий знак
                ch = Character.toTitleCase(bigS.charAt(bigS.length() - 2));
            }
            String temp = "";
            int l = temp.length();
            for (int j = 0; j < cities.length; j++) { //перебираем оставшиеся города и ищем самое длинное название
                if ((cities[j].charAt(0) == ch) && (!bigS.contains(cities[j]))) {
                    if (cities[j].length() > l) {
                        temp = cities[j];
                        l = temp.length();
                    }
                }
            }
            bigS = bigS + temp;
            razm = bigS.length();
            if (razm > max) { //если новая комбаниция длиннее прошлой то запоминаем
                max = razm;
                result = bigS;
            }
        }
    }
        System.out.println("Самая длинная цепочка: "+result);
        System.out.println("Длина цепочки: "+ max);
    }
1
0 / 0 / 0
Регистрация: 09.05.2015
Сообщений: 10
01.06.2015, 22:07  [ТС]
Цитата Сообщение от Welemir1 Посмотреть сообщение
не идеально и без коллекций, но сама можешь допилить, например Аррайлистом сделай
Спасибо большое! Коллекции уж точно сама допилю)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
01.06.2015, 22:07
Помогаю со студенческими работами здесь

STL: найти все максимальные цепочки подряд идущих положительных чисел с указанием длины каждой цепочки
Создать массив длины N (число N вводится с клавиатуры). Заполнить массив рандомно. Найти все максимальные цепочки подряд идущих...

Определить длину максимальной цепочки пробелов в строке
Дана строка. Определить какова максимальной цепочки пробелов.

Определить длину максимальной цепочки пробелов в строке
Дана строка. Определить какова максимальной цепочки пробелов.

Длина максимальной цепочки от подчиненного до генерального директора
В некоторой компании у каждого сотрудника, кроме генерального директора, есть ровно один непосредственный начальник. Также известно, что...

Определить Тор-5 городов с максимальной долей рынка
Здраствуйте! Незнаю как решить эту задачу (файл теста во вложении), пробовал сделать сводную таблицу, получается белиберда. Пожалуйста...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru