2013-05-24 5 views
-7

Я застрял в этом случае, Мне нужно сравнить ряд двухмерного массива с одномерным массивом. оба массива имеют такие символы, как + и - и D. для использования как массивы (строка и единственный массив) должны идеально соответствовать, но если у кого-либо есть символ D (для сомнительных), его следует рассматривать как включительно например. {+, -, д} по сравнению с {+, -, -}, { +, -, д}, { +, д, д} программа должна вернуть номера строк 2 и 3.Сравнение двухмерного массива с одномерным массивом

+0

Попробуйте опубликовать код или алгоритм, который вы используете, это дает лучшее понимание ваших проблем и подходит вам. –

+0

Используйте внешний цикл 'for', например' for (int rowNumber ... ', который пробегает от 0 до вертикальной размерности 2D-массива. Тогда внутри этого есть другой цикл' for', например 'for (int position ...' где позиция измеряет горизонтальное положение как 2D-массива, так и массива 1D, который является нашей поисковой строкой. Затем сравните 'arr2D [rowNumber, position]' с 'arr1D [position]' и проверьте, все ли OK во внутреннем цикле.Когда внутренний цикл завершен, вы знаете, должен ли вы дать текущий «rowNumber» или нет. –

ответ

0

Что-то в этом роде?

var mat = new[,] {{'-','+','d'},{'-','-','d'},{'-','d','+'}}; 
var arr = new[] {'d','-','+'}; 

var matHeight = mat.GetLength(0); 
var validRows = new List<int>(); 

for (int y = 0; y < matHeight; y++) 
{ 
    bool isRowValid = true; 

    for (int x = 0; x < arr.Length; x++) 
    { 
     if (mat[y, x] != 'd' && arr[x] != 'd' && mat[y, x] != arr[x]) 
     { 
      isRowValid = false; 
      break; 
     } 
    } 

    if (isRowValid) 
    { 
     validRows.Add(y); 
    } 
} 

foreach (var y in validRows) 
{ 
    Console.WriteLine("Row {0} is valid", y); 
    // will print 1 and 2 (two last rows indices) 
} 

Я предлагаю использовать массив массивов (неровный массив), а не двухмерный массив.

+0

@downvoter Ухаживать за разъяснением? – SimpleVar

+0

Это был не я, но поскольку SO не является кодом, генерирующим машина считается плохой отвечать на «вопросы» вроде этого (не проявляя собственных усилий, без полезного вопроса вообще, какое-то более или менее странное описание, не заботится о комментариях, ...) – JeffRSon

+0

(не было downvote!) Ваш 'mat.Length' является опечаткой для' mat.GetLength (0) '. –