n個字串按照字典序排列

2021-08-18 21:27:15 字數 2468 閱讀 8915

題目描述

給定n個字串,請對n個字串按照字典序排列。

輸入描述:

輸入第一行為乙個正整數n(1≤n≤1000),下面n行為n個字串(字串長度≤100),字串中只含有大小寫字母。

輸出描述:

資料輸出n行,輸出結果為按照字典序排列的字串。

輸入例子:

9 cap

to cat

card

two

too

up boat

boot

輸出例子:

boat

boot

cap

card

cat

to too

two

up做這道題之前先來看一下c++中的庫函式sort():

stl裡面有個sort函式,可以直接對陣列排序,複雜度為n*log2(n)。sort()定義在在標頭檔案中。sort函式是標準模板庫的函式,已知開始和結束的位址即可進行排序,可以用於比較任何容器(必須滿足隨機迭代器),任何元素,任何條件,執行速度一般比qsort要快。另外,sort()是類屬函式,可以用於比較任何容器,任何元素,任何條件。具體事例如下:

1、sort(begin,end),表示乙個範圍:

#include 

#include

using

namespace

std;

int main()

; for (int i = 0; i<10; i++)

cout

<< a[i] << endl;

sort(a, a + 10);

cout

<< endl;

for (int i = 0; i<10; i++)

cout

<< a[i] << endl;

return

0;}

注意:預設是公升序排序。sort中乙個改變排序順序的例子如下(降序):

#include 

#include

using

namespace

std;

bool cmp(int a, int b)

int main()

; for (int i = 0; i<10; i++)

cout

<< a[i] << endl;

sort(a, a + 10, cmp);

cout

<< endl;

for (int i = 0; i<10; i++)

cout

<< a[i] << endl;

return

0;}

這個函式可以傳兩個引數或三個引數。第乙個引數是要排序的區間首位址,第二個引數是區間尾位址的下一位址。也就是說,排序的區間是[a,b)。簡單來說,有乙個陣列int a[100],要對從a[0]到a[99]的元素進行排序,只要寫sort(a,a+100)就行了,預設的排序方式是公升序。如需要對陣列t的第0到len-1的元素排序,就寫sort(t,t+len);對向量v排序也差不多,sort(v.begin(),v.end());排序的資料型別不侷限於整數,只要是定義了小於運算的型別都可以,比如字串類string。

假設自己定義了乙個結構體node:

struct node;
有乙個node型別的陣列node arr[100],想對它進行排序:先按a值公升序排列,如果a值相同,再按b值降序排列,如果b還相同,就按c降序排列。就可以寫這樣乙個比較函式:

bool cmp(node x,node y)

那麼現在就來做上面的題吧:

#include 

#include

#include

using

namespace

std;

bool cmp(string a, string b)

int main()

sort(s,s+num,cmp);

for (int i = 0; i < num; i++)

}

return

0;}

或者:

#include 

#include

#include

#include

using

namespace

std;

bool cmp(string a, string b)

int main()

sort(v.begin(),v.end(),cmp);

cout

<< endl;

for (int i = 0; i < v.size(); i++)

}return

0;}

n個字串按照字典序排列

n個字串按照字典序排列 給定n個字串,請對n個字串按照字典序排列。輸入描述 輸入第一行為乙個正整數n 1 n 1000 下面n行為n個字串 字串長度 100 字串中只含有大小寫字母。輸出描述 資料輸出n行,輸出結果為按照字典序排列的字串。輸入例子 9 capto catcard twotoo upb...

C語言 字串 按照字典序排序

給定n個字串,請對n個字串按照字典序排列 input 輸入第一行為乙個正整數n 1 n 100 下面n行為n個字串 字串長度 30 字串中只含有大小寫字母。output 資料輸出n行,輸出結果為按照字典序排列的字串。sample input 9cap tocat card twotoo upboat...

倒數第N個字串

倒數第n個字串 給定乙個完全由小寫英文本母組成的字串等差遞增序列,該序列中的每個字串的長度固定為 l,從 l 個 a 開始,以 1 為步長遞增。例如當 l 為 3 時,序列為 這個序列的倒數第27個字串就是 zyz。對於任意給定的 l,本題要求你給出對應序列倒數第 n 個字串。輸入格式 輸入在一行中...