我正在尝试在techgig.com上进行在线测试。 问题是找到从矩阵左上角到右下角的最小路径。 我想用C语言编写代码。 最小成本函数已经给出,我不允许更改它。
char* minumumcost(char* input1[],int input2)
其中input1是矩阵,input2是矩阵中的行数。
然而由于我对C的了解有限,我只知道在声明为二维数组时如何操作矩阵。
对于二维数组,我打算进行以下操作。
这里的成本矩阵是成本[10] [10] \ while(point1!= n&& point2!= n) {
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 其中4是行数,剩下的是行的元素。
问题是如何使用input1 []执行此操作? 请尽快帮帮我 测试有时间限制。
答案 0 :(得分: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
终止字符串的行吗?您必须检查该信息的测试问题。