美文网首页
sort+结构体

sort+结构体

作者: Vincy_ivy | 来源:发表于2019-04-26 00:55 被阅读0次

基本

#include<iostream>
#include<algorithm>
using namespace std;
bool complare(int a,int b)
{
     return a>b;
}
int main()
{
     int a[10]={9,6,3,8,5,2,7,4,1,0};
     for(int i=0;i<10;i++)
     cout<<a[i]<<endl;
     sort(a,a+10,complare);//在这里就不需要对complare函数传入参数了,
//这是规则
     for(int i=0;i<10;i++)
        cout<<a[i]<<endl;
     return 0;
}

斯诺登密码

#include <iostream>
#include <cstring>
#include <stdio.h>
using namespace std;
int main()
{
char sz[27][10]={"zero","a","both","another","first","second","third","one","two","three","four","five","six","seven","eight","nine","ten","eleven","twelve","thirteen","fourteen","fifteen","sixteen","seventeen","eighteen","nineteen","twenty"};
int num[27]={0,1,2,2,1,2,3,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20};
char str[60];
gets(str);
int len=strlen(str),j=1,l=0,p=0,i,flag[6],number[100];
flag[0]=0;
for(i=0;i<100;i++)number[i]=0;
for(i=0;i<len;i++)if(str[i]==' '){str[i]='\0';flag[j++]=i+1;}//分解字符串,将空格换成'\0',并保存单词位置
for(i=0;i<j;i++)
    for(int k=0;k<27;k++)
        if(strcmp(str+flag[i],sz[k])==0)
            number[(num[k]*num[k])%100]++;//将单词换成对应得值
for(i=1;i<100;i++)
    for(j=0;j<number[i];j++)
        if(number[i]&&!p++)cout<<i;
        else if(number[i]&&i<10)cout<<0<<i;
        else if(number[i])cout<<i;
if(!p)cout<<0;
return 0;
}

例题

设有n个正整数(n≤20),将它们联接成一排,组成一个最大的多位整数。
例如:n=3时,3个整数13,312,343联接成的最大整数为:34331213
又如:

#include<iostream>
#include<string>
#include<algorithm>
using namespace std;
bool compare(string a,string b)
{
    return a+b>b+a;
}
int main()
{
    int n,i;
    string a[20];
    cin>>n;
    for(i=0;i<n;i++)
        cin>>a[i];
    sort(a,a+n,compare);
    for(i=0;i<n;i++)
        cout<<a[i];
    return 0;
}

魔法照片+结构体排序

#include<cstdio>
#include<iostream>
#include<algorithm>
using namespace std;

struct person{
    int W;//权值
    int num;//序号
    int post;//编号
}p[20005];
int W_comp(struct person &a,struct person &b)
{
    if(a.W!=b.W)    return a.W>b.W;
    else            return a.post<b.post;
}
int E[11],n,k;

int main()
{
    int i;
    scanf("%d%d",&n,&k);
    for(i=1;i<=10;i++)
        scanf("%d",&E[i]);
    for(i=1;i<=n;i++)
    {
        scanf("%d",&p[i].W);
        p[i].post=i;
    }
    sort(p+1,p+n+1,W_comp);

    for(i=1;i<=n;i++)
        p[i].W+=E[(i-1)%10+1];
    sort(p+1,p+1+n,W_comp);
    for(i=1;i<=k;i++)
        printf("%d ",p[i].post);
    return 0;
}

在可选的工作中,每次都选取结束时间最早的工作

#include <bits/stdc++.h>
using namespace std;
const int MAX_N = 100000;
int N,S[MAX_N],T[MAX_N];
pair<int , int >itv[MAX_N];

void solve(){
//对pair进行的是字典序比较
//为了让结束时间早的工作排在前面,把T存入first,把S存入second 
    for(int i=0;i<N;i++){
        itv[i].first=T[i];
        itv[i].second=S[i];
    } 
    sort(itv,itv+N);

//t是最后所选工作的结束时间
    int ans=0,t=0; 
    for(int i=0;i<N;i++){
        if(t<itv[i].second){
            ans++;
            t=itv[i].first;
        }
    }
    cout<<ans;
} 
int main()
{
    freopen("data","r",stdin);
    cin>>N;
    for(int i=0;i<N;i++)
        cin>>S[i];
    for(int i=0;i<N;i++)
        cin>>T[i];
    solve();
    return 0;
 } 

相关文章

  • sort+结构体

    基本 斯诺登密码 例题 设有n个正整数(n≤20),将它们联接成一排,组成一个最大的多位整数。例如:n=3时,3个...

  • 结构体

    [toc] 结构体的定义方式 先定义结构体类型,再定义结构体变量 定义结构体类型的同时定义结构体变量 定义结构体类...

  • 【C语言笔记】<十九>结构体

    结构体的基本概念 结构体初始化 结构体的内存存储细节 结构体定义的方式 结构体类型的作用域 指向结构体的指针 结构...

  • C结构体和链表

    一,结构体变量定义及初始化 二,无名结构体 备注:无名结构体很少使用 三,宏定义结构体 四,结构体嵌套 五,结构体...

  • 结构体

    结构体定义* 结构体中的格式:* struch 结构体名* {* 结构体成员变量* }* 结构体中的特点* 1.结...

  • 结构体数组的定义

    结构体数组的定义 1、先定义结构体类型,再定义结构体数组 2、定义结构体类型的同时定义结构体数组 3、省略结构体类...

  • C#结构体,析构方法,跨程序访问

    结构体 结构体定义 结构体的语法格式: struct + 结构体名 { 结构体成员变量(相当于类中的字段) } 结...

  • 结构体

    结构体有名定义 无名定义 结构体嵌套定义 结构体内存对齐 结构体成员初始化 结构体变量引用 结构体的有名定义:直白...

  • 菜鸡学Swift3.0 13.结构体

    结构体 struct 是值类型 1.定义结构体 struct 结构体类型 { var 结构体属性:类型 ...} ...

  • 结构体

    结构体初识 结构体指针 结构体的匿名字段 结构体嵌套 Go语言中的OOP

网友评论

      本文标题:sort+结构体

      本文链接:https://www.haomeiwen.com/subject/yjpagqtx.html