#include #include #include

using namespace std;

int digitSum(int n) { // 计算数位之和 int sum = 0; while (n > 0) { sum += n % 10; n /= 10; }
return sum; }

bool cmp(int a, int b) { // 排序规则 int sum_a = digitSum(a), sum_b = digitSum(b); if (sum_a != sum_b) { return sum_a < sum_b; } else { return a < b; } }

int main() { int n; cin >> n; vector a(n); for (int i = 0; i < n; i++) { cin >> a[i]; } sort(a.begin(), a.end(), cmp); for (int i = 0; i < n; i++) { cout << a[i] << " "; } cout << endl; return 0; }

C++ 实现数位之和排序算法

原文地址: https://www.cveoy.top/t/topic/ov9D 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录