数位排序例题
当 两个数各个数位之和不同时,将数位和较小的排在前面,当数位之和相等时, 将数值小的排在前面。 例如,2022 排在 409 前面,因为 2022 的数位之和是 6,小于 409 的数位 之和 13。 又如,6 排在 2022 前面,因为它们的数位之和相同,而 6 小于 2022。 给定正整数 n,m,请问对 1 到 n 采用这种方法排序时,排在第 m 个的元 素是多少?
数位和不等的,大的在后,相等的,直接比较数字大小
struct node{
int n1;
int n2;
bool operator <(const node &b) const{
if(n1!=b.n1){
return b.n1>n1;
//判断值相等,
}
if(n1==b.n1){
return b.n2>n2;
}
}
}a[n];
n1代表当前,b.n1代表后一个,所以是由小到大排序
或者是n1<b.n1
直接比较
bool cmp(node a,node b){
return a.n1 >b.n1;
}
内嵌的比直接比较的速度快