代码填空:组合数字(DFS)

来源:互联网 发布:网店美工招聘要求 编辑:程序博客网 时间:2024/06/04 17:40

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

分析:
dfs 不可k++

#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)/*在这里填写必要的代码*/);        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