水王争霸赛
題目描述:
眾所周知,IOIForum有很多水王,他們的發(fā)貼數(shù)是如此之多,以至于必須要用高精度數(shù)才能保存。 為了迎接國慶,IOIForum決定舉行一次水王爭霸賽,比賽的規(guī)則是將這些水王截止到2003年9月30日23時59分59秒這一刻所發(fā)的總貼數(shù)從大到小進行排序。每個水王當然都想取得盡量靠前的名次,所以他們竭盡全力,不擇手段地進行灌水。 終于,激動人心的一刻到來了,2003年10月1日0時0分0秒,你作為裁判得到了每個水王的發(fā)貼數(shù),現(xiàn)在,你的任務是公正地把這些水王按照發(fā)貼數(shù)從大到小進行排序。
輸入:
輸入的第一行是一個1到1000的整數(shù)N,表示總共有N位水王參加了爭霸賽。 以下依次給出每位水王的描述,一位水王的描述占據(jù)兩行,第一行為一個僅由字母和數(shù)字組成的長度不超過20的字符串,代表這個水王的ID,第二行一個高精度的整數(shù)(非負數(shù)),代表這個水王的發(fā)貼數(shù)。注意,這個整數(shù)的首位沒有不必要的0。 考慮到IOIForum的數(shù)據(jù)庫是有限的,所有水王發(fā)貼數(shù)的總長度(注意,是總長度而不是總和)不會超過10000。 除了子母、數(shù)字和必要的換行,輸入中不會出現(xiàn)空格等字符。
輸出:
依次輸出按照發(fā)貼數(shù)從大到小排好序的各位水王的ID,每個ID占據(jù)單獨的一行。不能有任何多余的字符。若幾個ID的發(fā)貼數(shù)相同,則按照ID的字典順序先后排列。
樣例輸入:
6
lowai
1534534124561243453
zhouyuan
23453265344
Maolaoda
23442353452342
BuTaoCaiGuai
7568784573464
ArthurKing
97534892734723947
hyyylr
623893451
樣例輸出:
lowai
ArthurKing
Maolaoda
BuTaoCaiGuai
zhouyuan
hyyylr
相關代碼以及解釋:
首先創(chuàng)建兩個二維字符型數(shù)組用來存放名字和財產。然后求出每個人對應數(shù)量的長度(長的肯定比短的大) 然后以對應數(shù)量排序,完成排序后對相同的ID進行字典順序排序。在這里插入代碼片
#include<stdio.h>
#include<string.h>
int main()
{
?int n,i,j;
?scanf("%d",&n);
?char id[n][25],num[n][10000];
?char t1[n][25],t2[n][10000];
?for(i=0;i<n;i++)
?{
??scanf("%s%s",id[i],num[i]);
?}
?int len[n],t[n];
?for(i=0;i<n;i++)
?{
??len[i]=strlen(num[i]);
?}
?
?for(i=0;i<n;i++)
?{
??for(j=i+1;j<n;j++)
??{
???if(len[j]>len[i])
???{
????strcpy(t1[i],id[i]);
????strcpy(id[i],id[j]);
????strcpy(id[j],t1[i]);
????t[i]=len[i];
????len[i]=len[j];
????len[j]=t[i];
????strcpy(t2[i],num[i]);
????strcpy(num[i],num[j]);
????strcpy(num[j],t2[i]);
???}
??}
?}
?for(i=0;i<n;i++)
?{
??for(j=i+1;j<n;j++)
??{
???if(len[i]==len[j])
???{
????if(strcmp(num[i],num[j])<0)
????{
?????strcpy(t1[i],id[i]);
?????strcpy(id[i],id[j]);
?????strcpy(id[j],t1[i]);
?????t[i]=len[i];
?????len[i]=len[j];
?????len[j]=t[i];
?????strcpy(t2[i],num[i]);
?????strcpy(num[i],num[j]);
?????strcpy(num[j],t2[i]);?
????}
???}
??}
?}
?for(i=0;i<n;i++)
?{
??for(j=i+1;j<n;j++)
??{
???if(strcmp(num[i],num[j])==0)
???{
????if(strcmp(id[i],id[j])>0)
????{
?????strcpy(t1[i],id[i]);
?????strcpy(id[i],id[j]);
?????strcpy(id[j],t1[i]);
????}
???}
??}
?}
?for(i=0;i<n;i++)
?{
??printf("%s\n",id[i]);
?}
?return 0;
}
總結
- 上一篇: 我所使用的五大返利网站使用比较
- 下一篇: 陶哲轩实分析:极限定律的本质