동일한 길이의 문자열 배열이 제공됩니다. 목표는 오름차순으로 정렬되지 않은 열( matrixof strings )을 찾는 것입니다. 예를 들어 문자열의 각 첫 번째 문자는 다음 문자열의 첫 번째 문자와 비교되는 식으로 마지막 문자열까지 비교됩니다. 증가하는 순서가 아니면 개수를 늘립니다. 모든 두 번째 문자에 대해 이 작업을 수행한 다음 마지막 문자까지 모든 문자열의 세 번째 문자에 대해 이렇게 합니다.
입력
Arr[]= { “abc”, “bcd”, “def” }
출력
Count of columns: 0
설명 - 각 열에 대해
열 1:인덱스 0의 문자:a
열 2:인덱스 1의 문자:b
열 3:인덱스 2의 문자:c
열의 모든 해당 문자는 오름차순으로 정렬됩니다.
설명 - 각 열에 대해
열 1 - 인덱스 0의 문자:d
열 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에 있는 결과를 반환합니다.입력
Arr[]= { “dbd”, “faf”, “eeg” }
출력
Count of columns: 2
아래 프로그램에서 사용된 접근 방식은 다음과 같습니다.
예시
#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