编程启蒙 | 第55课 自定义规则的排序

文摘   2024-11-01 14:33   广东  
《信息学奥赛一本通●编程启蒙 C++版
适用于刚开始学习 C++语言的学中高年级、初中低年级的同学。


第五章 数的存储与组织 

 55|自定义规则的排序

3323【例55.1】 整数奇偶排序

http://bas.ssoier.cn:8086/problem_show.php?pid=3323

#include<bits/stdc++.h>using namespace std;int n,x;vector<int> a;int main(){    cin>>n;    for(int i=1;i<=n;i++)  {    cin>>x;        if( x%2!=0 )    {      a.push_back(x);    }  }      sort(a.begin(),a.end());  //int k=a.end()-a.begin();  //cout<<k<<" "<<a.size()<<endl;    for(int i=0;i<a.size()-1;i++)  {    cout<<a[i]<<',';  }    cout<<a[a.size()-1]<<endl;   return 0;}


3324【例55.2】 约翰书架

http://bas.ssoier.cn:8086/problem_show.php?pid=3324

#include <bits/stdc++.h>using namespace std;int n,x,ans=0;vector<int> a;int main(){  cin>>n;  for(int i=0; i<n; i++)  {    cin>>x;    a.push_back(x);  }  sort(a.begin(),a.begin()+n);  for(int i=1; i<a.size(); i+=2)  {    ans+=a[i]-a[i-1];  }  cout<<ans;  return 0;}


3325【例55.3】 绝对值排序

http://bas.ssoier.cn:8086/problem_show.php?pid=3325

#include<bits/stdc++.h>using namespace std;
int main(){ long long a[5],x; cin>>x; a[1]=x/1000; a[2]=x/100%10; a[3]=x/10%10; a[4]=x%10; sort(a+1,a+5); long long mi=a[1]*1000+a[2]*100+a[3]*10+a[4]; long long ma=a[4]*1000+a[3]*100+a[2]*10+a[1]; ma-=mi; cout<<ma; return 0;}


3326练55.1 合影效果

http://bas.ssoier.cn:8086/problem_show.php?pid=3326

#include<bits/stdc++.h>using namespace std;int a[4];int main(){    cin>>a[0]>>a[1]>>a[2];      sort(a,a+3);    if( a[0]*a[0]+a[1]*a[1]==a[2]*a[2] )  {    cout<<a[2]*a[2]<<endl;  }  else  {    cout<<a[2]*a[2]+a[1]*a[1]<<endl;  }        return 0;}


3327练55.2 跳绳比赛

http://bas.ssoier.cn:8086/problem_show.php?pid=3327

#include<bits/stdc++.h>using namespace std;int n,a[105],sum;int main(){  while (1)  {    cin >> n;    if (n == 0) break;    for (int i = 0; i < n; i++) cin >> a[i];    sort(a, a + n);    sum = 0;    for (int i = 0; i <= n / 2; i++)    {      sum += a[i] / 2 + 1;    }    cout << sum << endl;  }  return 0;}


3328练55.3 收益最大

http://bas.ssoier.cn:8086/problem_show.php?pid=3328

#include<bits/stdc++.h>using namespace std;int a[5];char b[5];int main(){  cin>>a[0]>>a[1]>>a[2]>>b[0]>>b[1]>>b[2];  sort(a,a+3);  for(int i=0; i<3; i++)  {    if(b[i]=='A')      cout<<a[0]<<" ";    else if(b[i]=='B')      cout<<a[1]<<" ";    else if(b[i]=='C')      cout<<a[2]<<" ";  }  return 0;}


3329练55.4 沙堡

http://bas.ssoier.cn:8086/problem_show.php?pid=3329

#include<bits/stdc++.h>using namespace std;int a[1000005],n,m;int main(){  scanf("%d%d",&n,&m);  for(int i=0; i<n; i++)  {    scanf("%d",&a[i]);  }  sort(a,a+n);  for(int i=0; i<m; i++)  {    printf("%d\n",a[i]);  }  return 0;}


更多信奥内容,请关注【信奥营】

[1].信息学奥赛一本通(C++)题解及知识点

[2].信奥一本通.编程启蒙C++题解合集

[3].信息学奥赛 | 备赛CSP-JS 常用网站

[4].信息学奥赛 | 信息学竞赛推荐书(更新)

信奥营
信息学奥赛、白名单赛事、科技特长升学!
 最新文章