我要做以下练习:
写一个给出两个整数(x和k)和一个M×N矩阵的函数, 如果元素至少出现k次,则返回TRUE 在矩阵的至少x列中。
这是我的解决方案,但有一些错误:
#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;
}
答案 0 :(得分:1)
您需要将任务分成较小的块。要检查数字是否在x列中出现k次,请首先编写一个函数来检查一列中是否出现一次数字k次。该函数将有一个for循环。当你写它时,测试它,看看你是否正确。然后把这个函数放在另一个函数中,非常类似for循环,你就完成了。
答案 1 :(得分: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;
}
自己优化;)