0

我必须做以下练习:

编写一个函数,给定两个整数(x 和 k)和一个 MXN 矩阵,如果有一个元素在矩阵的至少 x 列中至少出现 k 次,则返回 TRUE。

这是我的解决方案,但有问题:

#include <iostream>
using namespace std;

const int DIM = 3;

bool check ( int matrix[DIM][DIM], int element,  int k,  int x )
{
    bool occur = false;
    int i,j = 0;
    for ( i=0; i<DIM; i++ )
    {
        for ( j=0; j<DIM; j++)
        {
            while ( i<k && occur)
            {
                matrix[i][j] == element;
                i++;
            }
        }
    }
    return occur;
}

int main ()
{
    int matrix[DIM][DIM] = {{1,2,3},
                            {4,1,6},
                            {7,8,9}};
    int x = 2;
    int k = 1;
    int elemento = 1;
    if ( check (matrix, element, k , x))
    {
        cout << "l'elemento "<< elemento <<" ricorre "<< k <<" volta/e in "<< x <<" colonna/e";
    }
    return 0;
}
4

2 回答 2

1

您需要将任务分成更小的块。要检查一个数字是否在 x 列中出现 k 次,首先编写一个函数来检查一个数字是否在一列中出现 k 次。该函数将有一个 for 循环。当你写它时,测试它,看看你是否做得正确。然后将该函数放入另一个非常相似的 for 循环中,就完成了。

于 2012-04-22T13:35:03.833 回答
0
bool check(int matrix[M][N], int element, int k, int x)
{
        int c1 = 0;
        for (int i = 0; i < M; ++i) {
                int c2 = 0;
                for (int j = 0; j < N; ++j) {
                        if (matrix[i][j] == element)
                                ++c2;
                }
                if (c2 >= k)
                        ++c1;
        }
        return c1 >= x;
}

自己优化;)

于 2012-04-22T18:47:13.113 回答