hdu 1872(稳定排序)
生活随笔
收集整理的這篇文章主要介紹了
hdu 1872(稳定排序)
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
穩(wěn)定排序就是相同元素排序后次序不會(huì)發(fā)生改變的排序方法.
冒泡是穩(wěn)定排序.
快一點(diǎn)的歸并也是穩(wěn)定排序.
?
穩(wěn)定排序
Time Limit: 3000/1000 MS (Java/Others)????Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 2766????Accepted Submission(s): 1081
如果對(duì)于數(shù)組中出現(xiàn)的任意a[i],a[j](i<j),其中a[i]==a[j],在進(jìn)行排序以后a[i]一定出現(xiàn)在a[j]之前,則認(rèn)為該排序是穩(wěn)定的。
某高校招生辦得到一份成績(jī)列表,上面記錄了考生名字和考生成績(jī)。并且對(duì)其使用了某排序算法按成績(jī)進(jìn)行遞減排序。現(xiàn)在請(qǐng)你判斷一下該排序算法是否正確,如果正確的話,則判斷該排序算法是否為穩(wěn)定的。
?
Input 本題目包含多組輸入,請(qǐng)?zhí)幚淼轿募Y(jié)束。對(duì)于每組數(shù)據(jù),第一行有一個(gè)正整數(shù)N(0<N<300),代表成績(jī)列表中的考生數(shù)目。
接下來(lái)有N行,每一行有一個(gè)字符串代表考生名字(長(zhǎng)度不超過(guò)50,僅包含'a'~'z'),和一個(gè)整數(shù)代表考生分?jǐn)?shù)(小于500)。其中名字和成績(jī)用一個(gè)空格隔開。
再接下來(lái)又有N行,是上述列表經(jīng)過(guò)某排序算法以后生成的一個(gè)序列。格式同上。
?
Output 對(duì)于每組數(shù)據(jù),如果算法是正確并且穩(wěn)定的,就在一行里面輸出"Right"。如果算法是正確的但不是穩(wěn)定的,就在一行里面輸出"Not Stable",并且在下面輸出正確穩(wěn)定排序的列表,格式同輸入。如果該算法是錯(cuò)誤的,就在一行里面輸出"Error",并且在下面輸出正確穩(wěn)定排序的列表,格式同輸入。注意,本題目不考慮該排序算法是錯(cuò)誤的,但結(jié)果是正確的這樣的意外情況。
?
Sample Input 3 aa 10 bb 10 cc 20 cc 20 bb 10 aa 10 3 aa 10 bb 10 cc 20 cc 20 aa 10 bb 10 3 aa 10 bb 10 cc 20 aa 10 bb 10 cc 20?
Sample Output Not Stable cc 20 aa 10 bb 10 Right Error cc 20 aa 10 bb 10?
Author linle?
Source 2008浙大研究生復(fù)試熱身賽(2)——全真模擬?
Recommend lcy #include <stdio.h> #include <string.h> #include <string> #include <iostream> using namespace std;struct node {char str[100];int key; };node g[300],g1[300];int main() {int n;while(scanf("%d",&n)!=EOF){for(int i=0;i<n;i++){scanf("%s %d",g[i].str,&g[i].key);}for(int i=0;i<n;i++)scanf("%s %d",g1[i].str,&g1[i].key);for(int i=0;i<n;i++)for(int j=i;j>0;j--){if(g[j].key>g[j-1].key) {char tmp[100];strcpy(tmp,g[j-1].str);strcpy(g[j-1].str,g[j].str);strcpy(g[j].str,tmp);int tt;tt=g[j].key;g[j].key=g[j-1].key;g[j-1].key=tt;}}int flag=0;for(int i=0;i<n;i++){if(g1[i].key!=g[i].key){flag=1;break;}}if(flag==1){printf("Error\n");for(int i=0;i<n;i++)printf("%s %d\n",g[i].str,g[i].key);continue;}for(int i=0;i<n;i++){if(strcmp(g1[i].str,g[i].str)!=0){flag=1;break;}}if(flag==1){printf("Not Stable\n");for(int i=0;i<n;i++)printf("%s %d\n",g[i].str,g[i].key);continue;}printf("Right\n");}return 0; }?
《新程序員》:云原生和全面數(shù)字化實(shí)踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀總結(jié)
以上是生活随笔為你收集整理的hdu 1872(稳定排序)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: SEO和Social工具.doc
- 下一篇: Circle Line