Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.04.2013, 11:08   #1
doodka
 
Регистрация: 26.04.2013
Сообщений: 4
По умолчанию Сравнение массивов

Есть массив такого вида:
int[][] arr = new int[30][];
и обычный массив. Как из рваного массива выбрать наиболее подходящий на обычный?
doodka вне форума Ответить с цитированием
Старый 26.04.2013, 11:49   #2
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Цитата:
Как из рваного массива выбрать наиболее подходящий на обычный?
Чего-чего? Можете перевести термин "наиболее подходящий"?
Abstraction вне форума Ответить с цитированием
Старый 26.04.2013, 12:08   #3
doodka
 
Регистрация: 26.04.2013
Сообщений: 4
По умолчанию

В массивах записаны вектора. В рваном массиве почти всегда присутствует вектор, который 100% схож с вектором из обычного массива.
Но может получится так, что его не будет там, а ответ нужен в любом случаи. Поэтому нужно выбирать "наиболее подходящий" вектор.
Т.е. сравнивать все вектора и у кого больше всего совпадений, того и выбирать. С учетом последовательности.
Пример:
Рваный массив содержит такие числа
[1 2 3 4]
[9 9 3 5]
Обычный массив содержит
[1 3 2 4]
Такого вектора нету в рваном массиве, но [1 2 3 4] очень похож на запрашиваемый. Его и нужно выбрать.
doodka вне форума Ответить с цитированием
Старый 26.04.2013, 12:28   #4
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Тогда для каждого массива нужно считать число совпадений и если оно больше последнего запомненного - запоминать его индекс. Как с обычным поиском максимума.
Abstraction вне форума Ответить с цитированием
Старый 26.04.2013, 15:37   #5
stalsoft
Форумчанин
 
Регистрация: 09.06.2011
Сообщений: 147
По умолчанию

Автор, если я тебя правильно понял:

Класс, который ищет совпадение в массиве
Код:
public class ArrManager
    {
        public int[][] firstArr;

        public ArrManager(int firstArrLenght = 30, int firstArrElementLenght = 30)
        {
            this.firstArr = new int[firstArrLenght][];

            for (int count = 0; count < this.firstArr.Length; count++)
            {
                this.firstArr[count] = new int[firstArrElementLenght];
                for (int i = 0; i < this.firstArr[count].Length; i++)
                {
                    this.firstArr[count][i] = i;
                }
            }
        }

        public bool IsExist(int[] arr)
        {
            int tmp = 0;
            //Тестовый массив, для отображение того, что нашли
            int[] tmpArr = new int[arr.Length];


            for (int count = 0; count < this.firstArr.Length; count++)
            {
                for (int i = 0; i < this.firstArr[count].Length; i++)
                {
                    if (tmp == arr.Length)
                        return true;
                    if (this.firstArr[count][i] == arr[tmp])
                    {
                        tmpArr[tmp] = this.firstArr[count][i];
                        tmp++;
                        //Затираем все след.идущие элементы....
                        for (int x = tmp; x < tmpArr.Length; x++)
                            tmpArr[x] = -1;
                    }
                    else
                        tmp = 0;
                }
            }

            return false;
        }
    }
А вот пример вызова метода...

Код:
bool b = new ArrManager(30, 30).IsExist(new int[] { 15, 16, 17 });
У женщин чары образуются из стрингов;
А у программистов наоборот - стринги образуются из чаров;
stalsoft вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сравнение массивов Nomicos Помощь студентам 2 24.01.2013 11:05
сравнение массивов Gang182 Помощь студентам 7 29.09.2011 10:31
Delphi, сравнение массивов, умножение массивов Marjasja Помощь студентам 0 22.05.2011 19:59
Delphi, сравнение массивов, умножение массивов Marjasja Общие вопросы Delphi 0 22.05.2011 19:49
сравнение массивов nik1905 Microsoft Office Excel 3 13.12.2010 13:53