文章

11

粉丝

223

获赞

14

访问

49.9k

头像
多级排序思想
P1248 北京大学机试题
发布于2022年6月9日 22:12
阅读数 3.8k

我自定义奇偶性的排序规则:

两个数a、b的奇偶性无非3种情况

1)同为奇数  ,降序即可

2)同为偶数 ,升序即可

3)一奇一偶,奇在偶前

#include <iostream>

#include <algorithm>

using namespace std;

 

bool cmp(int a, int b)

{

    // 奇数降序、偶数升序

    int i = a & 1, j = b & 1;

    if (i && j)   // 同为奇数,降序

        return a > b;

    else if (!i && !j)  // 同为偶数,升序

        return b > a;

    return i > j;   // 奇在偶前

}

int main()

{

    // 思路: 多级排序即可

    int a[10];

    while (cin >> a[0] >> a[1] >> a[2] >> a[3] >> a[4] >> a[5] >> a[6] >> a[7] >> a[8] >> a[9])

    {

        sort(a,a+10,cmp);

        for (int i = 0; i < 10; ++i)

            cout &...

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发