【问题标题】:C programming and array ,matrix manipulationC编程和数组,矩阵操作
【发布时间】:2015-11-25 16:54:15
【问题描述】:

我正在尝试在 techgig.com 上进行在线测试。 问题是找到从矩阵左上角到右下角的最小路径。 我正在尝试使用 C 语言对此进行编码。 minimumcost 函数已经给出,我不能更改它。

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

其中 input1 是矩阵,input2 是矩阵中的行数。

但是,由于我对 C 的了解有限,我只知道在将矩阵声明为二维数组时如何操作它。

对于二维数组我打算做如下操作。

这里的成本矩阵是 cost[10][10] \ 而(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[] 来做到这一点? 请尽快帮助我。 测试有时间限制。

【问题讨论】:

    标签: c arrays matrix


    【解决方案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 终止的字符串?您必须检查测试题以获取该信息。

    【讨论】:

    • 在编写char[] rowArray = row; 时,您一定想到了C 以外的其他语言。
    猜你喜欢
    • 2015-09-26
    • 2015-10-28
    • 2016-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-03
    • 1970-01-01
    相关资源
    最近更新 更多