文章

34

粉丝

0

获赞

354

访问

7.2k

头像
大整数排序 题解:
P1412 华中科技大学机试题
发布于2026年3月9日 23:33
阅读数 85

#include <bits/stdc++.h>
using namespace std;

// 正确的比较函数
bool cmp(const char* a, const char* b) {
    int lenA = strlen(a);
    int lenB = strlen(b);
    if (lenA != lenB) {
        return lenA < lenB;  // 长度不同,按长度升序
    }
    return strcmp(a,b)<0;  // 长度相同,按字典序升序
}

int main() {
    int n;
    char num[100][1000];

    while (scanf("%d", &n) != EOF) {
        for (int i = 0; i < n; i++) {
            scanf("%s", num[i]);  // 注意:num[i]是数组,不需要&
        }
        char* suffice[100];
        for(int i=0;i<n;i++)
            suffice[i]=num[i];
        // 排序
        stable_sort(suffice, suffice + n, cmp);

        // 输出结果
        for (int i = 0; i < n; i++) {
            printf("%s\n", suffice[i]);
        }
    }
    return 0;
}

 

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发