Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

นับคอลัมน์ที่ไม่ได้เรียงลำดับเพิ่มขึ้นในอาเรย์สตริงใน C++


เราได้รับอาเรย์ของสตริงที่มีความยาวเท่ากันทุกตัว เป้าหมายคือหาคอลัมน์ (เมทริกซ์ของสตริง) ที่ไม่ได้เรียงลำดับเพิ่มขึ้น (increasing order) เช่น ตัวอักษรแรกของแต่ละสตริงเปรียบเทียบกันตามลำดับ ถ้าไม่เพิ่มขึ้น ให้นับ 1 ทำซ้ำสำหรับตัวอักษรที่ 2, 3, ... จนถึงตัวสุดท้าย

อินพุต

Arr[] = {"abc", "bcd", "def"}

เอาต์พุต

Count of columns: 0

คำอธิบาย − คอลัมน์ 1: a < b < d, คอลัมน์ 2: b < c < e, คอลัมน์ 3: c < d < f เรียงเพิ่มขึ้นทุกคอลัมน์

อินพุต

Arr[] = {"dbd", "faf", "eeg"}

เอาต์พุต

Count of columns: 2

คำอธิบาย − คอลัมน์ 1: d < f > g (ไม่เพิ่ม), คอลัมน์ 2: b > a < e (ไม่เพิ่ม), คอลัมน์ 3: d < f < g (เพิ่ม) → นับ 2 คอลัมน์

วิธีการที่ใช้ในโปรแกรมด้านล่าง

  • อาเรย์ str[][] เก็บสตริงความยาวเท่ากัน
  • ฟังก์ชัน countCols(char str[3][4], int n, int len) คืนค่าจำนวนคอลัมน์ที่ไม่เรียงเพิ่ม
  • count = 0, col = 0 (index คอลัมน์ปัจจุบัน)
  • ลูป j=0 ถึง len-1 เปรียบเทียบ str[col][j] > str[col+1][j-1] || str[col+1][j] > str[col+2][j-1] ถ้าเป็นจริง count++
  • คืนค่า count

ตัวอย่างโค้ด

#include <bits/stdc++.h>
using namespace std;

int countCols(char str[3][4], int n, int len) {
    int count = 0;
    int col = 0;
    for (int 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