编程启蒙 | 第57课 全排列函数

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


第五章 数的存储与组织 

  第57课全排列函数

3334【例57.1】 字典序第几小

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

#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;}


3335【例57.2】 上一个排列

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

#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;}


3336【例57.3】火星人

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

#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;}


3337练57.1 全排列问题

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

#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;}

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

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

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

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

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

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