2013-11-02 6 views
0

2 개의 랜덤 2D 배열로 작업해야합니다. 예를 들어 하나는 5x10입니다. 행렬에서 최대 값을 찾을 수 있지만이 행을 삭제하는 방법을 모르겠다.이 최대 값은 어디입니까?최대 값을 찾고 2D 배열에서 해당 행을 삭제하십시오. C++

int max_ind(int masivs[x][y], int a, int b, int row[y], int rinda) 
{ 
    max=masivs[0][0]; 
    for(i=0;i<a;i++) 
     for(j=0;j<b;j++) 
      if (masivs[i][j]>max) 
       max=masivs[i][j]; 
    printf("%7d\n",max); 
} 

아이디어가 있으십니까?

+0

C 스타일 배열로 제한됩니까? 아니면 std :: vector를 사용할 수 있습니까? 'vec.erase()'를 사용하여 벡터에서 행을 "삭제"하는 것은 C 스타일 배열에서 행을 "삭제"하는 것보다 훨씬 쉽습니다. –

+0

"행 삭제"행렬의 크기가 변경됩니까? 즉, 5x10 행렬이 4x10이됩니까 (행 단위로 차원을 인용한다고 가정 할 때)? – seh

+0

나는 C 언어를 배우고 있으며 std :: vector없이 이것을 만들 필요가있다. 그래서 내가 어떻게 그걸 만들지 모르겠다 고 생각합니다. 감사합니다. @Zach Stark –

답변

1

최대 값뿐만 아니라 루프 인덱스를 저장하고 루프가 해당 행을 제거한 후에.

아, 예를 들어 행을 삭제하면 훨씬 간단 해집니다. std::vector (예 : std::vector<std::vector<int>> masivs). 당신이 std::vector을 사용할 수없는 경우


는, 당신은 나머지 행을 이동하고 하나의 행 수를 감소해야합니다. 이것은 다음 행을 "최대"행으로, 다음 행을 다음 행으로 이동시키는 루프에 의해 수행 될 수 있습니다.

+0

이제는 for 또는 while을 사용하지 않고 C++ 11 스타일 만 사용합니다. 재미있게 보내자! (최대 복잡도 O (n * m)). 3, 2, 1,가! – FKaria

관련 문제