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

Задача о Ежике

22.07.2016, 14:06. Показов 1246. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Помогите пожалуйста реализовать задачу.
Условие:
План прямоугольного сада размером mxn состоит из квадратных зон. В каждой зоне растёт по дереву. С каждого дерева любой зоны могут упасть несколько яблок.
В левом верхнем квадратике находится ёжик, который должен дойти до правого нижнего квадратика. В саду существуют ограничения относительно способа передвижения: ёжик может двигаться из текущего квадратика только в один из двух соседних правый либо нижний.
Составьте программу, которая вычисляет максимальное количество яблок, которое может собрать ёжик, передвигаясь к нужному квадратику.
Я не могу написать метод для нахождения пути максимальное количество яблок через рекурсию, а все остальное вроде есть.
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
public class Hedgehog {
public static void main(String[] args) {
        int n; 
        int m ;
        int summ = 0;
        System.out.println("enter the height of the rectangle");
        m=scn.nextInt();
        System.out.println("enter the length of the rectangle");
        n=scn.nextInt();
        Random rnd = new Random();
        int [][] p=new int[m][n];
       for(int i = 0;i<p.length;i++){
           for(int k=0;k<p[i].length;k++){
               p[i][k]=rnd.nextInt(3) + 0;;
           }
           
       }System.out.println("your rectangle");
       for(int i = 0;i<p.length;i++){
           for(int k=0;k<p[i].length;k++){
               System.out.print(p[i][k]+ "  ");
             
           }
    System.out.println();
       }
}
}
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.07.2016, 14:06
Ответы с готовыми решениями:

Олимпиадная задача по программированию. PascalABC.NET. Задача L. Переключение между окнами
Когда пользователь работает в операционной системе Winux, у него часто запущено несколько...

Васильев C# Глава 7 задача 8 (Просьба объяснить формулировку(задача внутри)
Текст задачи Напишите программу с классом, у которого есть текстовое поле. Значение текстовому...

Задача: В некотором государстве ввели компьютерный паспорт гражданина.(задача)
Доброго времени суток,форумчане. Хотелось бы попросить помощи в решении одной задачи от умных...

Васильев C# Глава 8 задача 2 (Просьба объяснить формулировку(задача внутри)
Текст задачи Написать программу , в которой есть класс с полем, являющимся ссылкой на одномерный...

3
494 / 340 / 134
Регистрация: 14.06.2016
Сообщений: 658
22.07.2016, 17:42 2
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
    public static int M = 5;
    public static int N = 3;
    public static int[][] rect = new int[N][M];
    public static List<Integer> res = new ArrayList();
    
    public static void next(int x, int y, int sum){
        if (x != N)
            for (int i = y; i < M; i++)
                 next(x + 1, i, (sum += rect[x][i]));
        res.add(sum);
    }
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        // TODO code application logic here
        Random random = new Random();
        for (int i = 0; i < N; i++)
            for (int j = 0; j < M; j++)
                System.out.printf("%s %s", rect[i][j] = random.nextInt(3), (j == M - 1) ? "\n" : "");
        next(0, 0, 0);
        res.sort(Integer::compare);
        System.out.printf("max %s%n", res.get(res.size() - 1));
    }
1
143 / 115 / 61
Регистрация: 13.01.2016
Сообщений: 305
22.07.2016, 17:45 3
Лучший ответ Сообщение было отмечено Taras_fj как решение

Решение

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
public class Hedgehog {
    public int[][] apples;
    final int MAX_APPLES = 10;
    private int height = 0;
    private int width = 0;
 
    public Hedgehog (int height, int width){
        this.height = height;
        this.width = width;
        apples = new int[height][width];
        for (int i = 0; i < height; i++){
            for (int j = 0; j < width; j++){
                apples[i][j] = (int) (Math.random() * MAX_APPLES);
            }
        }
        
    }
    
    public int maxApples(){
        for (int[] x : apples){
            for (int i : x) System.out.print(i + " ");
            System.out.println();
        }
        int i = applesIteration(0, 0, height - 1, width - 1);
        System.out.println("Max apples = " + i);
        return i;
    }
    
    private int applesIteration(int x, int y, int downs, int rights){
        // последняя итерация
        if (downs == 0 && rights == 0) return apples[x][y];
        // на правой границе
        else if (rights == 0) return apples[x][y] + applesIteration(x + 1, y, downs - 1, 0);
        // на нижней границе
        else if (downs == 0) return apples[x][y] + applesIteration(x, y + 1, 0, rights - 1);
        // в середине
        else {
            int goDown = applesIteration(x + 1, y, downs - 1, rights);
            int goRight = applesIteration(x, y + 1, downs, rights - 1);
            if (goDown > goRight) return apples[x][y] + goDown;
            else return apples[x][y] + goRight; 
        }
    }
}
Java
1
2
3
4
5
6
7
8
public class Main  {
    public static void main(String args[]) {
        
        Hedgehog h = new Hedgehog(4, 4);
        h.maxApples();
    }
 
}
1
0 / 0 / 0
Регистрация: 22.07.2016
Сообщений: 6
29.08.2016, 11:26  [ТС] 4
Здравствуйте, у меня возник вопрос по поводу алгоритма. При размере матрицы более 19Х19 производительность падает до нуля. Можно как то оптимизировать этот алгоритм?
0
29.08.2016, 11:26
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.08.2016, 11:26
Помогаю со студенческими работами здесь

Задача на перебор вариантов. Задача Л.Эйлера. Про чиновника
Задача Л.Эйлера. Некий чиновник купил лошадей и быков на сумму 1770 талеров. За каждую лошадь он...

Задача на k-тую цифру последовательности, задача на схему Горнера.
Ну, собственно опять прошу помощи... Задача 1: Определить k-тую цифру последовательности...

Олимпиадная задача по программированию. PascalABC.NET. Задача С. Считалка
Ирочка попросила маму придумать новую считалочку. Мама тут же ей &quot;выдала&quot;. Пусть в кругу N...

Первая смешанная задача для волнового уравнения на отрезке (задача о колебаниях ограниченной струны) методом Фурье
Решить первую смешанную задачу для волнового уравнения на отрезке (задача о колебаниях ограниченной...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru