目录
- 前言
- 一、题目描述
- 输入格式
- 输出格式
- 示例
- 示例输入
- 示例输出
- 样例解释
- 数据范围
- 题目大意
- 题目思路
- 写在文末
前言
今天是蓝桥杯备赛每日一题的第六天,感兴趣的小伙伴,可以订阅一下专栏。友友们一定要一起跟着做一下,这样印象才深刻!!!今天的题目相对简单,大家可以动手做一张。
一、题目描述
输入格式
输出格式
示例
示例输入
3
18 29 6
示例输出
6 29 18
样例解释
数据范围
题目大意
给出一套排序规则(封闭图形的个数大小排序,若相等,则比较数的大小),让我们排序,比较封闭图形的个数,按序输出。
题目思路
题目比较简单,笔者就直接给出流程了。
流程:
1 将每个数按位拆分,得出封闭个数,用pair进行存储每个数,然后用vector容器存储,pair第一个元素存储数值,第二个元素存储封闭图形个数(反过来也可以)。
2 函数cmp自定义排序规则,排序规则按第二个排序,若相同再按第一个进行排序
3 sort对vector进行自定义排序
4 输出答案
我们看下代码:
#include<iostream>
#include<vector>
#include<map>
#include<algorithm>
using namespace std;
typedef pair<int,int>PII;
vector<PII>v;
int idx;
int chaifen(int x){ //计算每一个数的封闭图形个数
int cnt=0;
int k = x;
while(x){
int t = x%10;
if(t == 1 || t == 2 || t ==3 || t==5 || t==7) cnt+=0;
else if(t == 0 || t == 4 || t == 6 || t==9) cnt+=1;
else cnt+=2;
x/=10;
}
v.push_back({k,cnt});
return cnt;
}
int cmp(PII a,PII b){//自定义排序顺序
if(a.second != b.second) return a.second < b.second;
else return a.first < b.first;
}
int main(){
int n;
cin>>n;
for(int i=0;i<n;++i){
int x;
cin>>x;
int t = chaifen(x);
}
sort(v.begin(),v.end(),cmp);
for(auto it:v) cout<<it.first<<" ";
}
写在文末
有疑问的友友,欢迎在评论区交流,笔者看到会及时回复。
请大家一定一定要关注!!!
请大家一定一定要关注!!!
请大家一定一定要关注!!!
友友们,你们的支持是我持续更新的动力~