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

来源:互联网 发布:js date对象参数 编辑:程序博客网 时间:2024/05/18 08:32

题目
右侧代码是将 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;}
0 0
原创粉丝点击