2015-11-25 3 views
0

Я пытаюсь принять онлайн-тест на techgig.com. Проблема заключается в том, чтобы найти минимальный путь от верхнего левого угла матрицы до нижнего правого. Я пытаюсь закодировать это с использованием языка C. Функция minimumcost уже указана как и мне не разрешено изменять это.C программирование и массив, манипуляция матрицами

char* minumumcost(char* input1[],int input2) 

где input1 - это матрица, а input2 - количество строк в матрице.

Однако, имея ограниченные знания о C, я знаю только, как манипулировать матрицей, когда она объявлена ​​как двухмерный массив.

С двухмерным массивом я намерен выполнить следующую операцию.

Здесь матрица стоимость затрат [10] [10] \ в то время (point1! = П & & point2! = П) {

if(cost[a][j+1]<cost[a+1][j] && cost[a][j+1]<cost[a+1][j+1]) 
{ 
    min=cost[a][j+1]; 
    s[k]='R'; 
    k++; 
    j++; 
    point1=a; 
    point2=j; 
} 
else if(cost[a+1][j]<cost[a+1][j+1] && cost[a+1][j]<cost[a][j+1]) 
{ 

    min=cost[a+1][j]; 
    s[k]='B'; 
    k++; 
    a++; 
    point1=a; 
    point2=j; 
} 
else if(cost[a+1][j+1]<cost[a+1][j] && cost[a+1][j+1]<cost[a][j+1]) 
    { 
     min=cost[a+1][j]; 
     s[k]='D'; 
     a++; 
     j++; 
     k++; 
      point1=a; 
    point2=j; 
    } 
      } 

\ Пример показывает, что входной сигнал матрица дается в этом виде. {5 # 2 # 3 # 2,8 # 5 # 5 # 3,1 # 4 # 7 # 6,3 # 3 # 6 # 5}, где 4 - нет строк, а остальные - это элементы строки.

Вопрос в том, как это сделать, используя input1 []? Пожалуйста, помогите мне скоро. Тест имеет ограничение по времени.

ответ

1

Функция принимает массив из char*. Обратите внимание, что в C массивы и указатели могут использоваться взаимозаменяемо большую часть времени.

Если вы указали указатель как char* p;, вы можете использовать его точно так же, как массив: p[5]. Таким образом, в вашем случае char* input[] совсем не отличается от массива массивов char: input[2][5] возьмет элемент # 2 из массива (дает char*!) И из этого элемента # 5. Или, еще более явно, вы могли бы и написать

char* row = input[2]; 
char element = row[5]; 

Тем не менее, сколько элементов каждой строки матрицы будет иметь не может быть сказано, что от вас в курсе. Является ли это квадратной матрицей, являются ли строки, представленные как завершенные строки \0? Вам нужно будет проверить тестовый вопрос для этой информации.

+0

При написании 'char [] rowArray = row;', вы должны иметь какой-то другой язык, кроме C. – Armali

+0

Упс. Удалив это сразу :) – JimmyB

Смежные вопросы