如何计算矩阵中不同元素的数量? C编程语言

时间:2013-12-03 19:32:37

标签: c matrix

我有一个整数矩阵,需要计算矩阵中除0之外的不同整数的数量。 例如,在这一个,

0 0 1 0
3 0 0 0
0 7 7 7
9 0 0 7

程序应该给出结果4,因为除了0之外你可以找到4个不同的整数。 请记住,我必须将其应用于以这种方式初始化的矩阵:

celula ** matrizInit(int linhas, int colunas){
    int i, j;
    celula ** matriz;

    matriz = (celula **)malloc(sizeof(celula)*linhas);
    for(i = 0; i < linhas ; i++){
        matriz[i] = (celula *)malloc(sizeof(celula)*colunas);
        for(j = 0; j < colunas; j++){
            matriz[i][j].linha = 0;
            matriz[i][j].coluna = 0;
        }
    }
    return matriz;

}

可以使用matriz [i] [j]。[INSERT_FIELD_OF_THE_STRUCTURE]访问每个整数字段。 提前谢谢!

1 个答案:

答案 0 :(得分:1)

如果您要查找的整数范围是1到9,我的想法是获取一个数组并在那里存储事件,然后遍历数组计算它们。

bool inMatrix[9] = {false};

因此,如果您找到数字5,则标记位置4(因为在C数组中从0开始,我们将为1)。

inMatrix[number-1] = true;

然后循环出现数组并计算trues

for (occurrences=0,i=0; i < 9; i++) {
    if (inMatrix[i]) occurrences++;
}

你有出现次数。瞧。

但是如果整数范围很宽,你肯定必须将所有数字存储在一个集合中,限制重复的数字,然后计算集合的元素。