排序思想,只不过这时的排序与之前的略有不同,com函数中要先比较封闭图形再比较真实的大小,多了一步,但是原理还是一样的
#include<iostream>
#include<algorithm>
#include<vector>
using namespace std;
//统计封闭图形
int t(int n) {
int count = 0;
while (n) {
int k = n % 10;
switch (k) {
case 0:case 4:case 6:case 9:
count++;
break;
case 1:case 2:case 3:case 5:case 7:
break;
case 8:
count += 2;
break;
}
n /= 10;
}
return count;
}
//比较两个数的大小
bool com(int a, int b) {
int x = t(a);
int y = t(b);
if (x != y)return x < y;
else return a < b;
}
int main() {
int n;
cin >> n;
vector<int> a(n);
for (int i = 0; i < n; i++)cin >> a[i];
//排序
sort(a.begin(), a.end(), com);
for (int i = 0; i < n; i++)cout << a[i] << " ";
return 0;
}