เราได้รับอาร์เรย์ของสตริงที่มีความยาวเท่ากัน เป้าหมายคือการหาคอลัมน์ ( 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 loop ให้คืนค่าผลลัพธ์ที่มีอยู่ในการนับอินพุต
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