用 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
廣告
資料結構
網路
關係型資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP