【问题标题】:check if an integer exists in a specific column of an array检查数组的特定列中是否存在整数
【发布时间】:2012-04-22 13:28:37
【问题描述】:

我要做以下练习:

编写一个函数,给定两个整数(x 和 k)和一个 M X 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;
}

【问题讨论】:

  • 怎么了?发生了什么?发生了什么没有
  • 你永远不会设置发生。你需要坐下来思考你的算法。
  • 对于诸如“有问题”之类的错误描述,我们的解决方案只能是“修复某事” :-) 如果您想要更多,首先提供所有相关信息来描述您的尽可能准确地解决问题。
  • 同意mert,从来没有occur = true
  • i &lt; kmatrix[i][j] == element; 似乎不正确。还有mert所说的。

标签: c++ arrays int


【解决方案1】:

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

【讨论】:

    【解决方案2】:
    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;
    }
    

    自己优化;)

    【讨论】:

      猜你喜欢
      • 2010-12-20
      • 2013-01-14
      • 2012-11-16
      • 1970-01-01
      • 2019-03-14
      • 2013-10-25
      • 1970-01-01
      • 2018-04-16
      • 2013-12-14
      相关资源
      最近更新 更多