Computer >> 컴퓨터 >  >> 프로그램 작성 >> C 프로그래밍

C에서 행렬의 두 행에 있는 요소 합의 최대 차이


행렬이 주어지고 행렬의 두 행에 있는 요소의 합 사이의 가장 큰 차이를 찾는 것이 작업입니다. i개의 행과 j개의 열이 있는 행렬 M[i,j]가 있다고 가정합니다. 행을 R0으로 설정합니다. Ri-1로 . 차이는 (Ry 요소의 합)을 빼서 계산됩니다. ) - (Rx 요소의 합 ), 여기서 x

이제 예제를 사용하여 무엇을 해야 하는지 이해합시다 -

입력

<미리>M[4][4] ={ { 1,2,0,5 }, {0,1,1,0}, {7,2,3,2} {1,2,4,1} };

출력

최대 차이:12

설명 − 여기서 Row 2의 원소의 합은 최대값이 14이고 Row 1의 원소의 합이 최소값인 2입니다. 따라서 최대 차이는 14-2=12입니다.

입력

<미리>M[4][4] ={ { 0,2,0,5 }, {0,1,4,0}, {1,2,3,2} {2,2,6,0} };

출력

최대 차이:5

설명 − 여기에서 Row 4의 요소 합은 최대값인 10이고 Row 2의 요소 합이 최소값인 5입니다. 따라서 최대 차이는 10-5=10입니다.

아래 프로그램에서 사용하는 접근 방식은 다음과 같습니다.

  • 행렬의 행과 열 수를 입력하여 최소 2개의 행을 갖도록 합니다.

  • rowmaxd() 함수에서 입력 행렬을 전달하고 행 개수와 열 개수를 전달하고 행 합계의 최대 차이를 반환합니다.

  • 여기에서 먼저 M[row][col] 행렬의 각 행 요소의 합을 RSum[i]라는 배열에 저장합니다. RSum[row]의 길이는 M[row][col]의 행 수에 따라 다릅니다.

  • 그런 다음 MD를 RSum[1]-RSum[0] 간의 최대 차이로 가정합니다. 여기서 RSum[0]은 0행의 모든 ​​요소의 합이고 RSums[1]은 1행의 모든 ​​요소의 합입니다.

  • 또한 RSum[0]이 RSum[row]에서 가장 작다고 가정하고 MIN 변수에 저장합니다.

  • 0에서 i까지의 for 루프에서 각 RSum[row]를 순회하고 RSum[i]-MIN>MD 간의 차이를 비교합니다. 그렇다면 MD를 업데이트하십시오. 그렇지 않으면 RSum[row]

예시

#include#define MAX 100 // 두 번째 행이 첫 번째 행보다 먼저 나타나도록 두 행의 요소 합 간의 최대 차이를 계산하는 함수를 만듭니다.int rowmaxd(int M[][MAX], int row, int col){ //각 행의 원소의 합을 저장하기 위해 int RSum[row]; for(int i=0;iMD) MD=RSum[i]-MIN; // 이 값이 MIN보다 작으면 MIN을 업데이트합니다. if(RSum[i] 

출력

위의 코드를 실행하면 다음과 같은 결과를 얻을 수 있습니다 -

행렬의 두 행에 있는 요소 합계의 최대 차이:5