-1 / 0 / 0
Регистрация: 31.03.2019
Сообщений: 44
1

Дана последовательность х1,х2,…,х. Найти наибольшую сумму элементов отличающихся друг от друга 1цей и расположенных по

13.10.2019, 19:50. Показов 1593. Ответов 14
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Дана последовательность х1,х2,…,х. Найти наибольшую сумму элементов отличающихся друг от друга 1-цей и расположенных по возрастанию(подряд идущих). Помогите пожалуйста, сколько пытался но не все правильно получается.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.10.2019, 19:50
Ответы с готовыми решениями:

Найти номера двух элементов массива, наименее отличающихся друг от друга
Дан целочисленный массив из 30 элементов. Элементы массива могут принимать произвольные целые...

Найти и вывести номера двух элементов массива, наименее отличающихся друг от друга
дан целочисленный массив из 30 элементов. элементы массива могут принимать произвольные целые...

Дана последовательность чисел d1, d2, ., d50. Найти сумму S1 элементов до максимального элемента и сумму S2 элементов, расположенных правее него
Дана последовательность чисел d1, d2, ..., d50. Найти сумму S1 элементов до максимального элемента...

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

14
251 / 167 / 94
Регистрация: 16.09.2019
Сообщений: 457
13.10.2019, 20:23 2
Вроде работает.
C#
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
public static int Foo(List<int> list)
        {
            int result = 0;
            int sum = 0;
            int temp = 0;
 
            for(int i = 0; i < list.Count - 1; i++)
            {
                if(list[i + 1] - list[i] == 1)
                {
                    sum += list[i];
                    temp = list[i + 1];
                }
                else
                {
                    sum += temp;
                    if(sum > result)
                        result = sum;
                    temp = 0;
                    sum = 0;
                }
            }
 
            return result;
        }
1
-1 / 0 / 0
Регистрация: 31.03.2019
Сообщений: 44
13.10.2019, 21:18  [ТС] 3
а как это будет выглядеть полностью в проекте?
0
251 / 167 / 94
Регистрация: 16.09.2019
Сообщений: 457
13.10.2019, 21:27 4
MYXOOL, не понял вопрос. Это функция, который возвращает сумму этих элементов.
0
-1 / 0 / 0
Регистрация: 31.03.2019
Сообщений: 44
13.10.2019, 21:31  [ТС] 5
я понимаю, просто могли бы вы разместить не функцию, а программу целиком. Начиная от using system до самого конца, у меня она выводит просто 0, может я что-то не так записываю.
0
251 / 167 / 94
Регистрация: 16.09.2019
Сообщений: 457
13.10.2019, 21:46 6
MYXOOL, Вот, в параметры функция принимает список List<int> и выводит самую большую сумму.
C#
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
using System;
using System.Collections.Generic;
namespace Training
{
    public class Program
    {
        public static void Main()
        {
            Console.WriteLine(Foo(new List<int> { 2, 4, 2, 5, 6, 45, 2, 32, 1, 2, 3, 4, 5, 8, 3, 1, 6, 4, 7, 5, 6, 7, 8, 4 }));
 
            Console.ReadKey(true);
        }
 
        public static int Foo(List<int> list)
        {
            int result = 0;
            int sum = 0;
            int temp = 0;
 
            for(int i = 0; i < list.Count - 1; i++)
            {
                if(list[i + 1] - list[i] == 1)
                {
                    sum += list[i];
                    temp = list[i + 1];
                }
                else
                {
                    sum += temp;
                    if(sum > result)
                        result = sum;
                    temp = 0;
                    sum = 0;
                }
            }
 
            return result;
        }
    }
}
0
-1 / 0 / 0
Регистрация: 31.03.2019
Сообщений: 44
13.10.2019, 22:02  [ТС] 7
Хорошо, спасибо большое, выручили. А если не через List, а если через массив сделать? Если не сложно.
0
251 / 167 / 94
Регистрация: 16.09.2019
Сообщений: 457
13.10.2019, 22:06 8
Лучший ответ Сообщение было отмечено MYXOOL как решение

Решение

C#
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
public static int Foo(List<int> list)
        {
 
            int result = 0;
            int sum = 0;
            int temp = 0;
 
            for(int i = 1; i <= list.Count - 1; i++)
            {
                int first = list[i - 1];
                int second = list[i];
                if(second - first == 1)
                {
                    sum += first;
                    temp = second;
                }
                else
                {
                    sum += temp;
                    if(sum > result)
                        result = sum;
                    temp = 0;
                    sum = 0;
                }
            }
            if(sum + temp > result)
                result = sum + temp;
            return result;
        }
Вот, там нашел ошибку.

Добавлено через 1 минуту
C#
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
public static int Foo(int[] array)
        {
 
            int result = 0;
            int sum = 0;
            int temp = 0;
 
            for(int i = 1; i <= array.Length - 1; i++)
            {
                int first = array[i - 1];
                int second = array[i];
                if(second - first == 1)
                {
                    sum += first;
                    temp = second;
                }
                else
                {
                    sum += temp;
                    if(sum > result)
                        result = sum;
                    temp = 0;
                    sum = 0;
                }
            }
            if(sum + temp > result)
                result = sum + temp;
            return result;
        }
Вот через массив.
0
-1 / 0 / 0
Регистрация: 31.03.2019
Сообщений: 44
13.10.2019, 22:07  [ТС] 9
Хорошо, спасибо большое, выручили. А если не через List, а если через массив сделать? Если не сложно.
В чем кстати ошибка была, вроде и первый вариант исправно с другими значениями работал
0
251 / 167 / 94
Регистрация: 16.09.2019
Сообщений: 457
13.10.2019, 22:13 10
MYXOOL, не считал последний индекс.
C#
1
new List<int> { 2, 3, 4, 5, 6, 1, 78, 2, 1, 4, 5, 6, 7, 8, 9 };
попробуйте вставить этот лист в старый метод, потом в новый, разные значение.
0
-1 / 0 / 0
Регистрация: 31.03.2019
Сообщений: 44
13.10.2019, 22:19  [ТС] 11
а если через массив, то в public static void main(), вместо Console.WriteLine(Foo(new List<int> { 2... будет что-то вроде Console.WriteLine(Foo(new array [] { 2... ?
0
251 / 167 / 94
Регистрация: 16.09.2019
Сообщений: 457
13.10.2019, 22:23 12
MYXOOL, ага

Добавлено через 1 минуту
MYXOOL, и да, на заметку, добавьте ник при ответе кликом по имени пользователя, а то когда вы пишите, не приходит уведомление.
0
-1 / 0 / 0
Регистрация: 31.03.2019
Сообщений: 44
13.10.2019, 22:32  [ТС] 13
Arthur Progy, странно конечно, но она перестала работать снова, как будто массив не видит или что-то похожее. Вероятно, что я опять накосячил, не могли бы вы кинуть код от и до, только через массив.
PS сори за глупейшие вопросы, конечно.
0
251 / 167 / 94
Регистрация: 16.09.2019
Сообщений: 457
13.10.2019, 22:44 14
MYXOOL,
C#
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
using System;
using System.Collections.Generic;
namespace Training
{
    public class Program
    {
        public static void Main()
        {
            var array = new int[] { 3, 2, 4, 6, 8, 4, 3, 2, 6, 9, 10, 11, 12, 4, 2, 5, 6, 7, 8 };
            var list = new List<int> { 3, 2, 4, 6, 8, 4, 3, 2, 6, 9, 10, 11, 12, 4, 2, 5, 6, 7, 8 };
 
            var arraySum = Foo(array);
            var listSum = Foo(list);
 
            Console.WriteLine(arraySum);
            Console.WriteLine(listSum);
 
            Console.ReadKey(true);
        }
 
        public static int Foo(int[] array)//через массив
        {
            int result = 0;
            int sum = 0;
            int temp = 0;
 
            for(int i = 1; i <= array.Length - 1; i++)
            {
                int first = array[i - 1];
                int second = array[i];
                if(second - first == 1)
                {
                    sum += first;
                    temp = second;
                }
                else
                {
                    sum += temp;
                    if(sum > result)
                        result = sum;
                    temp = 0;
                    sum = 0;
                }
            }
            if(sum + temp > result)
                result = sum + temp;
            return result;
        }
 
        public static int Foo(List<int> list)//через лист
        {
            int result = 0;
            int sum = 0;
            int temp = 0;
 
            for(int i = 1; i <= list.Count - 1; i++)
            {
                int first = list[i - 1];
                int second = list[i];
                if(second - first == 1)
                {
                    sum += first;
                    temp = second;
                }
                else
                {
                    sum += temp;
                    if(sum > result)
                        result = sum;
                    temp = 0;
                    sum = 0;
                }
            }
            if(sum + temp > result)
                result = sum + temp;
            return result;
        }
    }
}
1
3464 / 2471 / 1170
Регистрация: 14.08.2016
Сообщений: 8,162
14.10.2019, 00:37 15
Arthur Progy, у списка есть конструктор, принимающий на вход, то, что реализует(явно или не явно) IEnumerable
C#
1
2
            var array = new int[] { 3, 2, 4, 6, 8, 4, 3, 2, 6, 9, 10, 11, 12, 4, 2, 5, 6, 7, 8 };
            var list = new List<int>(array);
вместо перегрузки, можно, если необходимо, подумать над дженериком, выглядит "понтовей" для препа и правильней в реализации
З.Ы. все ИМХО
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.10.2019, 00:37
Помогаю со студенческими работами здесь

Количество пар соседних элементов, отличающихся друг от друга по абсолютному значению не более чем на 5
Добрый вечер! Прошу помочь в написании программы(подсказки, напутствия, все что угодно) : С...

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

Найти пару кругов, имеющих наибольшую площадь и не перекрывающих друг друга
Ребят, помогите, без них до сессии не допускают( Задача 2.1. Четыре круга заданы радиусами и...

Найти максимальную цепочку чисел, отличающихся друг от друга не более, чем на величину "a"
Здравствуйте, помогите, пожалуйста. Задание такое: найти в последовательности чисел максимальную по...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru