AcWing 5992. 封闭图形个数 (双关键字排序)
原题链接
简单
点个赞再走吧,球球了qwq
很简单的双关键字排序,大佬们不愿意写的话可copy
C++ 代码
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
const int N = 200010;
int n;
int seal[]={1,0,0,0,1,0,1,0,2,1};
struct num{
int val;
int a;
bool operator < (const num rhs){ //双关键字排序
if (this->val!=rhs.val) return this->val < rhs.val;
else return this->a < rhs.a;
}
}arr[N];
int cal(int n){ //计算每个数的封闭图形个数
int sum=0;
while (n){
sum+=seal[n%10];
n/=10;
}
return sum;
}
int main(){
cin>>n;
for(int i=1;i<=n;i++){
scanf("%d",&arr[i].a);
arr[i].val=cal(arr[i].a);
}
sort(arr+1,arr+n+1);
for(int i=1;i<=n;i++){
printf("%d ",arr[i].a);
}
return 0;
}