【华为机试】2024年真题C卷(java)-抢7游戏

【华为机试】2024年真题C卷汇总(java)

 一、题目

题目描述:

A、B两个人玩抢7游戏,游戏规则为A先报一个起始数字X(10<起始数字<10000),B报下一个数字Y(X-Y<3), A再报个数字Z(Y-Z<3),以此类推,直到其中一个抢到7,抢到7即为胜者;在B赢得 比赛的情况下,一共有多少种组合?

二、输入输出

输入描述:
起始数字M,如100; 10<=M<=10000
输出描述:
B能赢得比赛的 组合次数

三、示例

示例1:
输入:
10
输出:
1

【华为机试】2024年真题C卷(java)-抢7游戏_第1张图片

四、解题思路

简单的逻辑模拟题

五、参考代码

/*
 * @#coding: utf-8
 * @Author: mgc
 * @Date: 2024-02-02 17:47:00
 * @LastEditors: Do not edit
 * @LastEditTime: 2024-02-02 17:48:55
 */

// import java.util.*;
// import java.util.HashMap;
// import java.util.Scanner;
// import java.util.regex.Matcher;
// import java.util.stream.Stream;
// import java.util.regex.Pattern;
// import java.util.stream.Collectors;

import java.util.Scanner;

public class Main {
    public static int count = 0;

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int startNumber = scanner.nextInt(); // 输入起始数字
        backtrace(startNumber, 1); // 进行回溯计算
        System.out.println(count); // 输出结果
    }

    public static void backtrace(int num, int flag) {
        if (num <= 7) {
            if (flag == 0) {
                count += 1; // 统计组合次数
            }
            return;
        } else if (num < 10) {
            if (flag == 1) {
                count += 1; // 统计组合次数
                return;
            }
        }

        // 递归调用进行回溯
        backtrace(num - 1, flag == 1 ? 0 : 1);
        backtrace(num - 2, flag == 1 ? 0 : 1);
    }
}

你可能感兴趣的:(华为,java,华为od,算法,华为机试,抢7游戏)