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

카운트 번호 C++에서 오름차순으로 정렬되지 않은 열

<시간/>

동일한 길이의 문자열 배열이 제공됩니다. 목표는 오름차순으로 정렬되지 않은 열( matrixof strings )을 찾는 것입니다. 예를 들어 문자열의 각 첫 번째 문자는 다음 문자열의 첫 번째 문자와 비교되는 식으로 마지막 문자열까지 비교됩니다. 증가하는 순서가 아니면 개수를 늘립니다. 모든 두 번째 문자에 대해 이 작업을 수행한 다음 마지막 문자까지 모든 문자열의 세 번째 문자에 대해 이렇게 합니다.

입력

Arr[]= { “abc”, “bcd”, “def” }

출력

Count of columns: 0

설명 - 각 열에 대해

열 1:인덱스 0의 문자:a

열 2:인덱스 1의 문자:b

열 3:인덱스 2의 문자:c

열의 모든 해당 문자는 오름차순으로 정렬됩니다.

입력

Arr[]= { “dbd”, “faf”, “eeg” }

출력

Count of columns: 2

설명 - 각 열에 대해

열 1 - 인덱스 0의 문자:dg

열 2 - 인덱스 1의 문자:b>a

열 3 - 인덱스 2의 문자:d

1열과 2열에는 오름차순이 없는 문자가 있습니다. 개수=2

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

  • 문자 배열 arr[][]는 동일한 길이의 문자열을 저장하는 데 사용됩니다.

  • 함수 countCols(char str[3][4],int n,int len)은 문자열 배열을 취합니다. 그 안에 있는 문자열의 개수와 각 문자열의 길이를 입력으로 입력하고 증가하는 순서가 아닌 열의 개수를 반환합니다.

  • 카운트를 0으로 초기화합니다.

  • Col은 현재 열을 나타내는 데 사용됩니다. ( 모든 문자열에 대한 공통 인덱스 ).

  • for 루프를 사용하여 첫 번째 인덱스에서 시작하여 문자열 길이(모두 동일한 길이)까지 각 문자열을 동시에 순회합니다.

  • 여기서 각 문자열은 3자이므로 str[col][j]>str[col+1][j-1] ||str[col+1][j]>str[col+2][j- 1]. 조건이 참이면 개수를 늘립니다.

  • for 루프가 끝나면 count에 있는 결과를 반환합니다.

예시

#include <bits/stdc++.h>
using namespace std;
int countCols(char str[3][4],int n,int len){
    int i,j;
   int count=0;
   int col=0;
   for(j=0;j<len;j++){
      if(str[col][j]>str[col+1][j-1] || str[col+1][j]>str[col+2][j-1] )
         count++;
   }
   return count;
}
int main(){
   char arr[3][4]={"abc", "daf", "ghi"};
   cout<<"\nColumns that are not sorted:"<<countCols(arr,3,3);
   return 0;
}

출력

Columns that are not sorted:2