首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >计蒜客蓝桥杯模拟赛5 最大组合数

计蒜客蓝桥杯模拟赛5 最大组合数

作者头像
Max超
发布2019-01-21 14:51:57
4030
发布2019-01-21 14:51:57
举报

题目 右侧代码是将 6 个整数按照任意顺序组合到一起,计算能组合出的最大数字。 例如:4123,25,66 组合到一起就是 66412325。 请阅读程序补全代码,实现这个功能

#include <stdio.h>
long long max(long long x, long long y) {
    return x > y ? x : y;
}
long long test(int a[], int n) {
    long long ret = 0;
    for (int i = 0; i < n; ++i) {
        int tp = a[i];
        int j = 1;
        //计算位数 
        while(tp) {
            j *= 10;
            tp /= 10;
        }
        ret = ret * j + a[i];
    }
    return ret;
}

long long f(int a[], int k) {
    if (k == 6) {
        return test(a, k);
    }
    long long ret = 0;
    for(int i = k; i < 6; ++i) {
        int t = a[k];
        a[k] = a[i];
        a[i] = t;
        ret = max(ret, f(a,k+1));//看到k==6,就知道此处用递归
        t = a[k];
        a[k] = a[i];
        a[i] = t;
    }
    return ret;
}

int main() {
    int a[6] = {517, 283, 429, 65, 6566, 32};
    printf("%lld\n", f(a, 0));
    return 0;
}
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017年04月03日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档