JDOJ

来源:互联网 发布:黑社会网络2001 编辑:程序博客网 时间:2024/05/22 19:07

第1题

#include <stdio.h>#include <algorithm>using namespace std;int main() {int n;int buf[10000];while (scanf("%d",&n)!=EOF){for(int i=0;i<n;i++){    scanf("%d",&buf[i]);}sort(buf,buf + n);for(int i=0;i<n;i++){    printf("%d",buf[i]);}printf("\n");}return 0;}

倒序排列

#include <stdio.h>#include <algorithm>using namespace std;bool cmp(int x,int y){//定义排序规则return x>y;}int main(){int n;int buf[100];while (scanf("%d",&n)!=EOF){    for(int i=0;i<n;i++){        scanf("%d",&buf[i]);    }    sort(buf,buf+n,cmp);//使用该重载形式,我们表明将要使用自己定义的排列规则    for(int i=0;i<n;i++){        printf ("%d",buf[i]);    }    printf ("\n");}    return 0;}

输出样例
这里写图片描述

这里写图片描述

代码2.4

#include <stdio.h>#include <algorithm>#include<string.h>using namespace std;struct E {char name[101];int age ;int score;}buf[1000];bool cmp(E a,E b){//实现比较规则if(a.score !=   b.score) return a.score<b.score; //若分数不相同则分数低者在前int tmp = strcmp(a.name,b.name);if(tmp!=0) return tmp<0;else return a.age<b.age;}int main () {int n;while (scanf("%d",&n)!=EOF){    for(int i=0;i<n;i++){        scanf("%s%d%d",buf[i].name,&buf[i].age,&buf[i].score);    }//输入    sort(buf,buf    +   n,cmp);    for (int i = 0; i < n; i++)    {        printf("%s %d %d\n",buf[i].name,buf[i].age,buf[i].score);    }//输出排序后结果  }return 0;}

输出效果
这里写图片描述

代码2.5
输出效果一样

#include <stdio.h>#include <algorithm>#include<string.h>using namespace std;struct E {char name[101];int age ;int score;bool operator<(const E &b) const{//利用C++算符重载直接定义小于运算符    if(score!=b.score) return score< b.score;    int tmp=strcmp(name,b.name);    if(tmp!=0) return tmp<0;    else return age<b.age;}}buf[1000];int main () {int n;while (scanf("%d",&n)!=EOF){    for(int i=0;i<n;i++){                scanf("%s%d%d",buf[i].name,&buf[i].age,&buf[i].score);    }//输入    sort(buf,buf+n);    for (int i = 0; i < n; i++)    {     printf ("\n");     printf("%s %d %d\n",buf[i].name,buf[i].age,buf[i].score);    }//输出排序后结果}return 0;}
原创粉丝点击