用 C++ 統計未按升序排序的列數


給定一個字串陣列,每個字串長度相同。目標是找到未按升序排序的列(字串矩陣)。例如,比較每個字串的第一個字元與下一個字串的第一個字元,以此類推,直到最後一個字串。如果它們不是按升序排列的,則增加計數。對所有第二個字元、所有字串的第三個字元,依此類推,直到最後一個字元,都執行此操作。

輸入

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

輸出

Count of columns: 0

解釋 - 對於每一列:

第 1 列:索引 0 處的字元:a<b<d

第 2 列:索引 1 處的字元:b<c<e

第 3 列:索引 2 處的字元:c<d<f

列中所有對應的字元都按升序排序。

輸入

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

輸出

Count of columns: 2

解釋 - 對於每一列:

第 1 列 - 索引 0 處的字元:d<f>g

第 2 列 - 索引 1 處的字元:b>a<e

第 3 列 - 索引 2 處的字元:d<f<g

第 1 列和第 2 列的字元未按升序排列。計數=2

下面程式中使用的方案如下

  • 字元陣列 arr[][] 用於儲存相同長度的字串。

  • 函式 countCols(char str[3][4],int n,int len) 以字串陣列、其中的字串數和每個字串的長度作為輸入,並返回未按升序排列的列數。

  • 將 count 初始化為 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

更新於: 2020-07-28

201 次檢視

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.