当前位置: 首页 > wzjs >正文

wordpress底部功能按钮唐山seo排名

wordpress底部功能按钮,唐山seo排名,青岛网络工程优化,建立网站的原因2025 A卷 200分 题型 本专栏内全部题目均提供Java、python、JavaScript、C、C++、GO六种语言的最佳实现方式; 并且每种语言均涵盖详细的问题分析、解题思路、代码实现、代码详解、3个测试用例以及综合分析; 本文收录于专栏:《2025华为OD真题目录+全流程解析+备考攻略+经验分…

在这里插入图片描述

2025 A卷 200分 题型

本专栏内全部题目均提供Java、python、JavaScript、C、C++、GO六种语言的最佳实现方式;
并且每种语言均涵盖详细的问题分析、解题思路、代码实现、代码详解、3个测试用例以及综合分析;
本文收录于专栏:《2025华为OD真题目录+全流程解析+备考攻略+经验分享》

华为OD机试真题《最佳的出牌方法》:


文章快捷目录

题目描述及说明

Java

python

JavaScript

C

GO


题目名称:最佳的出牌方法


  1. 知识点:字符串处理、贪心算法、逻辑分析
  2. 时间限制:1秒
  3. 空间限制:256MB
  4. 语言限制:不限

题目描述

你手上有一副扑克牌(不含大小王),每张牌按牌面数字记分(J=11,Q=12,K=13)。出牌时按照以下规则计算得分:

  1. 单张牌:得分为牌面数字(如出2得2分)。
  2. 对子或三张:得分为牌面数字总和×2(如出3张3,得分为(3+3+3)×2=18)。
  3. 五张顺子:得分为牌面数字总和×2(如出34567,得分为(3+4+5+6+7)×2=50)。
    • 顺子需为连续数字(如10JQKA不算顺子)。
  4. 四张炸弹:得分为牌面数字总和×3(如出4张4,得分为4×4×3=48)。

输入描述

  • 按顺序排列的牌序列,最少1张,最多15张。
  • 输入格式:1-9为数字,10输入为0,J/Q/K为大写字母。
  • 无需校验非法输入(如非[0-9JQK]字符或某牌超过4张)。

输出描述

  • 最高得分。

示例
输入:33445677
输出:67
解释:

  • 方案1:出对3、对4、对7,单张5、6,得分=(3×2)+(4×2)+(7×2)+5+6=67。
  • 方案2:出顺子34567,剩余单张3、4、7,得分=50+(3+4+7)=64。
    因此最高得分为67。

Java

问题分析

我们需要计算一副扑克牌的最高得分出牌方案。根据规则,不同的出牌方式有不同的得分计算方式。我们需要考虑所有可能的组合方式,选择得分最高的方案。

解题思路

  1. 输入处理:将输入的字符转换为对应的牌面数字,统计每张牌的数量。
  2. 递归遍历所有可能的出牌方式:包括顺子、炸弹、三张、对子、单张。
  3. 记忆化优化:避免重复计算相同牌数量分布的最高得分。
  4. 动态规划:通过递归和记忆化,计算所有可能的出牌组合,取最大值。

代码实现

import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;public class Main {private static final Map<Long, Integer> memo = new HashMap<>();public static void main(String[] args) {Scanner scanner = new Scanner(System.in);String input = scanner.next();int[] count = new int[14]; // count[1]~count[13] 分别表示牌面1~13的数量for (char c : input.toCharArray()) {int num = convert(c);count[num]++;}System.out.println(dfs(count));}private static int convert(char c) {if (c == '0') return 10; // 输入中的0代表10if (c == 'J') return 11;if (c == 'Q') return 12;if (c == 'K') return 13;return c - '0';}private static int dfs(int[] count) {long code = encode(count);if (memo.containsKey(code)) {return memo.get(code);}int max = calculateSingleSum(count); // 初始值为所有牌作为单张的得分// 处理顺子(五张连续)for (int i = 1; i <= 9; i++) { // 顺子的起始牌最多到9(例如9,10,J,Q,K)if (canFormShunzi(count, i)) {// 扣除顺子的五张牌for (int j = i; j <= i + 4; j++) count[j]--;int current = (i + (i + 1) + (i + 2) + (i + 3) + (i + 4)) * 2 + dfs(count);max = Math.max(max, current);// 恢复for (int j = i; j <= i + 4; j++) count[j]++;}}// 处理炸弹(四张)for (int i = 1; i <= 13; i++) {if (count[i] >= 4) {count[i] -= 4;int current = i * 4 * 3 + dfs(count);max = Math.max(max, current);count[i] += 4;}}// 处理三张for (int i = 1; i <= 13; i++) {if (count[i] >= 3) {count[i] -= 3;int current = i * 3 * 2 + dfs(count);max = Math.max(max, current);count[i] += 3;}}// 处理对子for (int i = 1; i <= 13; i++) {if (count[i] >= 2) {count[i] -= 2;int current = i * 2 * 2 + dfs(count);max = Math.max(max, current);count[i] += 2;}}memo.put(code, max);return max;}// 计算所有剩余牌作为单张的总分private static int calculateSingleSum(int[] count) {int sum = 0;for (int i = 1; i <= 13; i++) {sum += count[i] * i;}return sum;}// 判断是否能组成以start开始的顺子private static boolean canFormShunzi(int[] count, int start) {for (int i = start; i <= start + 4; i++) {if (count[i] < 1) return false;}return true;}// 将count数组编码为唯一的long值(5进制)private static long encode(int[] count) {long code = 0;for (int i = 1; i <= 13; i++) {code = code * 5 + count[i];}return code;}
}

代码详解

  1. 输入处理:将输入的字符转换为对应的牌面数字,存入数组count,其中count[i]表示数字i的牌的数量。
  2. 递归函数dfs:计算当前牌数量分布下的最高得分。
    • 记忆化:将当前牌数量编码为long值,避免重复计算。
    • 顺子处理:遍历所有可能的顺子起始点,扣除牌后递归计算剩余得分。
    • 炸弹处理:扣除四张牌,递归计算剩余得分。
    • 三张和对子处理:类似炸弹处理方式。
  3. 单张得分计算:当无法组成其他组合时,所有剩余牌作为单张计算得分。

示例测试

示例1
输入:33445677
输出:67
解析:最佳方案为拆分为对子3、4、7,单张5、6,得分67。

http://www.dtcms.com/wzjs/364776.html

相关文章:

  • 做一个论坛网站多少钱长春seo快速排名
  • 嘉祥网站建设营销软件
  • 公司手机网站模板免费下载如何设计推广方案
  • wordpress 电影网站seo网站推广
  • 旅游网站建设与规划论文企业官网首页设计
  • 建网站要学哪些软件网站建设计划书
  • 做推广最好的网站是哪个?友情链接网站免费
  • 网站建设分工说明培训机构专业
  • 网站建设开发定制中美关系最新消息
  • 上海工厂网站建设爱链接购买链接
  • 哪个nas可以做网站十大管理培训课程
  • 佛山网站建设费用预算北京网站优化快速排名
  • 商家微信下单小程序怎么开通seo网站外包公司
  • 网络营销推广方法论文 结合案例湖南专业关键词优化服务水平
  • 网站建设营销平台产品宣传推广方式有哪些
  • 全网营销型推广网站建设百度推广官方电话
  • 兰州装修公司口碑排名推荐sem优化策略
  • 网站如何做搜索功能的百度营销后台
  • 徐州做网站哪个好飓风seo刷排名软件
  • 开网店卖什么好seo关键词优化推广价格
  • 在施工过程中某施工企业的安全网站seo思路
  • 做网站广告公司联系方式长春seo网站优化
  • 设计网站建设宽带业务如何推广
  • 如何做的网站手机可以用吗友情链接网自动收录
  • 网站换ip影响 百度关键词优化seo费用
  • 网站做排名靠前广州网络营销产品代理
  • 网站美工网络舆情案例分析
  • 东莞网站建设方案重庆网站排名公司
  • 网站注册页面无锡网站推广公司
  • sem推广软件哪家好seo快速排名软件案例