2012-04-22 22 views
0

我已經做以下運動:檢查,如果在陣列中的特定列中存在的整數

編寫給定兩個整數的函數(x和k)和一個m×n矩陣, 返回TRUE,如果有是在矩陣的至少x列中至少出現k次 的元素。

這是我的解決方案,但也有一些是錯誤的:

#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; 
} 
+3

有什麼不對?發生了什麼?什麼是不發生? – Mat 2012-04-22 13:31:16

+1

你從未設置過。你需要坐下來思考你的算法。 – mert 2012-04-22 13:33:51

+1

對於「某些事情是錯誤的」錯誤描述,我們的解決方案不能僅僅是「修正某些事情」:-)如果您想要更多,首先提供所有相關信息以儘可能準確地描述您的問題。 – 2012-04-22 13:35:16

回答

1

您需要將任務分成小塊。要檢查一個數字是否出現在x列中k次,首先編寫一個函數來檢查一個數字是否在一列中出現k次。該函數將有一個for循環。當你寫它時,測試它看看你是否做得正確。然後把這個函數放在另一個,非常類似的循環,你就完成了。

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; 
} 

優化它自己;)

+0

非常感謝你! :) – 2012-04-25 12:19:22

相關問題