如何在矩阵(C)中检查元素是否存在多次?

时间:2014-04-05 17:49:12

标签: c matrix

我正在学习C编程语言,我遇到了一个我试图解决的问题。我试着寻找我的问题的答案,但我找不到。

我的问题是如何在矩阵中检查元素是否存在多次。此外,如果它不止一次但存在于同一行,则不计算在内。

我尝试写一个函数来做这个,但是当我看到它时,我感到很头疼,所以我想我从一开始就做错了。

有人可以告诉我该怎么做吗?

提前致谢。

2 个答案:

答案 0 :(得分:0)

  1. 检查矩阵中是否存在多个元素:对整个数组进行排序(就好像它是一个单一的线性向量)。然后在矢量中线性化并检查相邻元素是否相同。
  2. 检查一个元素在矩阵的列中是否存在多次:与1.中的相同,但仅针对每列。

答案 1 :(得分:0)

根据您的要求,您需要分析矩阵中的所有元素。您还需要跟踪是否已在该列中找到该元素。以下是示例代码:

int count(int **matrix, int rows, int cols, int number) {
  int count=0, found_in_row=0, i, j;
  for(i=0; i<rows; i++) {
    for(j=0; j<cols; j++) {
      if(matrix[i][j]==number && found_in_row==0) {
        count++;
      }
    }
    found_in_row=0;
  }
 return count;
}

现在假设我有这个矩阵:

1 2 1
1 2 3

通过致电count(matrix, 3, 3, 1),您将获得2作为答案。这意味着数字1出现两次(计算第一行的第二个1)。 因此,通过在矩阵上调用count,您可以通过检查是否大于1来了解number是否多次出现。