【蓝桥杯备赛】——每日一题(封闭图形个数)(STL(vector) + 自定义排序)(第十五届蓝桥杯C++组大赛)(day6)

目录

  • 前言
  • 一、题目描述
    • 输入格式
    • 输出格式
    • 示例
      • 示例输入
      • 示例输出
      • 样例解释
    • 数据范围
  • 题目大意
  • 题目思路
  • 写在文末

前言

 今天是蓝桥杯备赛每日一题的第六天,感兴趣的小伙伴,可以订阅一下专栏。友友们一定要一起跟着做一下,这样印象才深刻!!!今天的题目相对简单,大家可以动手做一张。

一、题目描述

题目传送门
在这里插入图片描述

输入格式

在这里插入图片描述

输出格式

在这里插入图片描述

示例

在这里插入图片描述

示例输入

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<<" ";

}

写在文末

 有疑问的友友,欢迎在评论区交流,笔者看到会及时回复

请大家一定一定要关注!!!
请大家一定一定要关注!!!
请大家一定一定要关注!!!
友友们,你们的支持是我持续更新的动力~

创作不易,求关注,点赞,收藏,谢谢~
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wxchyy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值