Форум программистов, компьютерный форум, киберфорум
Наши страницы
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
Гузель23
0 / 0 / 0
Регистрация: 11.12.2012
Сообщений: 56
1

Найти распечатать строку заданной целочисленной матрицы размером 10×10, в которой длина максимальной серии минимальна

06.05.2013, 11:07. Просмотров 875. Ответов 6
Метки нет (Все метки)

привет) помогите пожалуйста решить задачу.
сама задача: Найти распечатать строку заданной целочисленной матрицы размером 10×10, в которой длина максимальной серии минимальна.

вот что я сделала:
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
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace _124
{
 class Program
 {
 static void Main(string[] args)
 {
 int[,] mas = new int[5, 5];
     int[] mas_a = new int[5];
 int min,k;
 
 Random rnd = new Random();
 for (int i = 0; i < 5; i++)
 {
 for (int j = 0; j < 5; j++)
 {
 mas[i, j] = 0 + rnd.Next(5);
 Console.Write("{0} ", mas[i, j]);
 }
 Console.WriteLine();
 }
 k = 1;
 for (int i = 1; i <4; i++)
 {
 for (int j = 1; j < 4; j++)
 {
     
 if (mas[i , j] == mas[i, j+1] )
     k=k+1;
 }
     k=1;
     
     mas_a[i]=k;
    
     
 }
 min = mas_a[1];
 for (int i = 1; i < 4; i++)
 {
     for (int j = 1; j < 4; j++)
     {
         if (mas_a[i] < min)
             min = mas_a[i];
 
 }
 } 
Console.WriteLine("minmax= " + min); 
Console.ReadKey();
 }
 }
}

всегда выводит minmax=1; помогите пожалуйста)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.05.2013, 11:07
Ответы с готовыми решениями:

Найти номер строки заданной целочисленной матрицы 10×10, в которой находится самая длинная серия
Попалась такая задача, нужна помощь: Найти номер строки заданной целочисленной...

Для заданной матрицы размером 8 на 8 найти такие k,при которых k-я строка матрицы совпадет с k-ым столбцом
Для заданной матрицы размером 8 на 8 найти такие k,при которых k-я строка...

Получить целочисленную матрицу размером m×n, в которой элементы в четных строках и столбцах положительные, а остальные отрицательные.
33. Получить целочисленную матрицу размером m×n, в которой элементы в четных...

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

Определить номер строки квадратной матрицы, сумма элементов которой минимальна
Помоги пожалуйста Написать программу, которая определяет номер строки...

6
titans2011
302 / 263 / 109
Регистрация: 27.09.2010
Сообщений: 1,058
06.05.2013, 13:00 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
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
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace _124
{
 class Program
    {
        static void Main(string[] args)
        {
            int[,] mas = new int[5, 5];
            int[] mas_a = new int[5];
            int min, k;
 
            Random rnd = new Random();
            for (int i = 0; i < 5; i++)
            {
                for (int j = 0; j < 5; j++)
                {
                    mas[i, j] = 0 + rnd.Next(5);
                    Console.Write("{0} ", mas[i, j]);
                }
                Console.WriteLine();
            }
            k = 1;
            for (int i = 0; i < 5; i++)
            {
                for (int j = 0; j < 4; j++)
                {
 
                    if (mas[i, j] == mas[i, j + 1])
                        k = k + 1;
                }
 
 
                mas_a[i] = k;
                k = 1;
 
            }
            min = mas_a[0];
            for (int i = 1; i <5; i++)
            {
                    if (mas_a[i] < min)
                        min = mas_a[i];
            }
            Console.WriteLine("minmax= " + min);
            Console.ReadKey();
        }
    }
}
Добавлено через 5 минут
Я подправил немного код. Но вы что-то намудрили. Дело в том, что вы нулевой столбец сравниваете с последующим в каждой строке. И у вас априори всегда будет единица (т.к. вы меряете серию с нуля а не с любой позиции). Я бы помог, но до меня не доходит смысл: "в которой длина максимальной серии минимальна"
0
Гузель23
0 / 0 / 0
Регистрация: 11.12.2012
Сообщений: 56
06.05.2013, 15:59  [ТС] 3
нужно рассмотреть матрицу построчно, в каждой строке найти максимальную длину серию( серия-последовательность одинаковых элементов, длина-количество этих элементов), и уже из этих длин найти минимальную.

т.е если взять матрицу 5х5:

5 5 5 5 5 (в этой строке 1серия: длина (55555)=5) max длина=5
1 1 3 3 3 (2 серии: длина первой=2, длина второй=3) max=3
0 0 0 0 4 (1 серия:длина= 4) max=4
8 8 2 6 8 (1 серия,длина=2) max=2
6 5 7 0 7 (нет серии, длина=0) max=0


среди этих максимумов, минимум=0
ну как то так)
0
titans2011
302 / 263 / 109
Регистрация: 27.09.2010
Сообщений: 1,058
06.05.2013, 16:45 4
Ну где-то так я и думал. У меня сейчас нет времени ваш алгоритм реализовывать (уезжаю в отпуск). Вы вместо вот этого кода:
C#
1
2
if (mas[i, j] == mas[i, j + 1])
                        k = k + 1;
Должны подставить код, который пробегается по строчке и находит эти максимумы. Понимаете в чем ваша основная проблема. Дело в том, что по хорошому нужно вначале объявить переменную, которая бы задавала размер массива. Вы в примере создали массив 5*5, хотя по условию задачи нужно было создать 10*10. И если вы сейчас попробуете поменять размер массива, вы будете много раз менять число 5, либо 4. Будет легче если вверху будет переменная, которую можно один раз поменять.

Во вторых, возникает следующая задача. Если у вас будет например тот же массив 10*10, то у вас уже может быть 5 серий в одной строке. Т.е. нужно создать динамический массив. Я бы кончено использовал List<int> - это быстрее, и меньше геморроя. Но я так понимаю, в задаче такого не допускается. Поэтому вам нужно будет создать функцию, которая динамические расширяет массив.
Т.е. Алгоритм такой:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
           for (int i = 0; i < n; i++)
            {
                    //создали динамический буфер
                    //создали переменную индекса
                for (int j = 0; j < n-1; j++)
                {
                    //if(mas[j]==mas[j+1])
                   {
                    //проверка, есть ли такой индекс в массиве? Если нет, отсылаем в функцию, для расширения массива, массив[индекс]=0;
                              //массив[индекс]++;
                   }else
                   {
                             //индекс++;
                   }
                    // тут пробегаемся по динамическому массиву, находим максимум, и записываем в наш массив.
                                     
                }
 
}
Все остальное рабочее. Вам осталось написать код по тому алгоритму, что я набросал.
1
Гузель23
0 / 0 / 0
Регистрация: 11.12.2012
Сообщений: 56
06.05.2013, 16:51  [ТС] 5
спасибо.постараюсь что-нибудь сделать.
0
Гузель23
0 / 0 / 0
Регистрация: 11.12.2012
Сообщений: 56
11.05.2013, 10:47  [ТС] 6
извините, у меня еще один вопрос.
я создала динамический массив А, переменную индекса t

//проверка, есть ли такой индекс в массиве? Если нет, отсылаем в функцию, для расширения массива, массив[индекс]=0;
//массив[индекс]++;


а вот тут непоняла, какой индекс и в каком массиве?
0
titans2011
302 / 263 / 109
Регистрация: 27.09.2010
Сообщений: 1,058
11.05.2013, 10:57 7
Ну вы создали массив, например размером на 3 ячейки. Вы прошли циклом. Смотрите, что нужна 4-я ячейка. Вы этот массив отправляете в функцию, которая делает массив на 4 ячейки, при этом три из них копирует со старого. Возвращает массив. И потом в новый массив, в 4-ю ячейку вы записываете ноль (т.е. длина очереди).
Если очередь продолжается, вы считаете её, итерируя ячейку массива с индексом , насколько я понимаю, t.
0
11.05.2013, 10:57
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.05.2013, 10:57

В целочисленный массив размером n×n вставить строку из нулей после всех строк, в которых нет ни одного нуля
Вставить строку из нулей после всех строк, в которых нет ни одного нуля.

Найти точку, сумма расстояний от которой до остальных точек минимальна
Имеется задачка. Дан массив точек на прямой, найти точку, сумма расстояний от...

Найти и распечатать строку заданной целочисленной матрицы размером 10х10
Найти и распечатать строку заданной целочисленной матрицы размером 10х10, в...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru