欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

笔试 - 邪恶数字4与7

程序员文章站 2024-03-12 16:17:08
...

笔试 - 邪恶数字4与7上图来源于强大的Q群友。。ps.侵删!
这是2020/02/28做的笔试题。当时没做出来。
现在冲~
练练递归

import java.util.Scanner;

public class Main {
    //标志位
    private static boolean flag = false;
    int du = 0; //邪恶程度

    public void check(int[] a, int n, int k) {
        if (flag == true){
            return;
        }
        if (n == 0) {
            flag = true;
            System.out.println(du);
        }
        for (int j = k - 1; j >= 0; j--) {
            du++;
            if (n - a[j] >= 0) {
                check(a, n - a[j], k);
            }
            du--;
        }
    }

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        //存放 含 4 7 的数
        int[] a = new int[126];
        int k = 0;
        int ans = 0;
        for (int i = 0; i <= n; i++) {
            int ti = i;
            boolean flag = false;
            while (ti > 0) {
                int tmp = ti % 10;
                ti /= 10;
                if (tmp == 4 || tmp == 7) {
                    if (ti <= 0) {
                        flag = true;
                    }
                } else
                    break;
            }
            if (flag) {
                a[k++] = i;
            }
        }
        Main main = new Main();
        //k是数组a的存放4 7 后的真实长度。
        main.check(a, n, k);
        if (flag == false)
            System.out.println(0);
    }
}
相关标签: 笔试编程题