理解C转汇编后代码分析

 题目

. - 力扣(LeetCode)

解题代码

#include <stdio.h>
#include "stdbool.h"typedef struct {int score;int index;int count;
} Record;
Record records[26] = {0};int totalScore(char *w) {int total = 0;for (int i = 0; i < strlen(w); ++i) {total += records[w[i] - 'a'].score;}return total;
}int cmp(char **w1, char **w2) {return totalScore(*w2) - totalScore(*w1);
}int maxScore = 0;
#define Max(A, B) A>B?A:Bvoid recur(char **words, int wordsSize, int s, Record *records) {for (int i = wordsSize - 1; i >= 0; --i) {char *word = words[i];if (word == NULL) {continue;}int totalScore = 0;Record tmp[26] = {0};bool canUse = true;for (int j = 0; j < strlen(word); ++j) {int index = word[j] - 'a';tmp[index].count++;if (tmp[index].count > records[index].count) {//                printf("%s,%d\n", word, index);canUse = false;break;}totalScore += records[index].score;}if (canUse) {for (int k = 0; k < 26; ++k) {records[k].count -= tmp[k].count;}recur(words, i, totalScore + s, records);for (int k = 0; k < 26; ++k) {records[k].count += tmp[k].count;}}recur(words, i, s, records);}maxScore = Max(maxScore, s);
}int maxScoreWords(char **words, int wordsSize, char *letters, int lettersSize, int *score, int scoreSize) {maxScore=0;memset(records, 0, sizeof(records));for (int i = 0; i < scoreSize; ++i) {records[i].score = score[i];records[i].index = i;}for (int i = 0; i < lettersSize; ++i) {int index = letters[i] - 'a';records[index].count += 1;}qsort(words, wordsSize, sizeof(char *), cmp);recur(words, wordsSize, 0, records);return maxScore;}
int main() {char *a[]={"dog","cat","dad","good"};char b[]={'a', 'a', 'c', 'd', 'd', 'd', 'g', 'o', 'o'};int c[]={1,0,9,5,0,0,3,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0};int ret=maxScoreWords(a,sizeof(a)/sizeof(char *), b, sizeof(b), c,sizeof(c)/4);return ret;
}

用例中字符数组可用浏览器console 敲回车

调maxScoreWords入参汇编指令

 寄存器现状

三个数组分别打印

字符数组
x/9c $rdx
整形数组
x/26dw $r8
字符串数组
x/a $rdi #得到数组地址
x/16c 数组地址

通过bt也可印证

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/708801.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python的解释器

无极低码 &#xff1a;https://wheart.cn 2. 使用 Python 的解释器 2.1. 唤出解释器 当 Python 解释器在机器上可用时&#xff0c;它通常被安装在 /usr/local/bin/python3.12&#xff1b;只要将 /usr/local/bin 加入 Unix shell 的搜索路径就可以通过输入如下命令来启动它&am…

热点参数流控(Sentinel)

热点参数流控 热点流控 资源必须使用注解 SentinelResource 编写接口 以及 热点参数流控处理器 /*** 热点流控 必须使用注解 SentinelResource* param id* return*/ RequestMapping("/getById/{id}") SentinelResource(value "getById", blockHandler …

Java设计模式 | 七大原则之合成复用原则

基本介绍 合成复用原则&#xff08;Composite Reuse Principle&#xff09;尽量使用合成/聚合的方式&#xff0c;而不是使用继承 设计原则核心思想总结 找出应用中可能需要变化之处&#xff0c;把他们独立出来&#xff0c;不要和那些不需要变化的代码混在一起针对接口编程&…

八、ActiveMQ持久化

ActiveMQ持久化 一、MQ的高可用二、持久化介绍三、持久化存储方式1.AMQ Mesage Store(了解&#xff09;2.KahaDB消息存储(默认)2.1 存储原理 3.JDBC消息存储4.LevelDB消息存储(了解)5.JDBC Message Store with ActiveMQ Journal查询持久化存储方式 四、持久化存储使用1.JDBC消息…

C++:模版初阶 | STL简介

创作不易&#xff0c;感谢支持&#xff01;&#xff01; 一、泛型编程思想 如何实现一个通用的交换函数呢&#xff1f; 注&#xff1a;其实swap函数在C的标准库提供了&#xff0c;不需要自己写&#xff0c;这边只是举个例子 void Swap(int& left, int& right) { in…

【小夏送书 | 第二期】世界顶级名校计算机专业,都在用哪些书当教材?

&#x1f304;参与规则 参与方式&#xff1a;关注博主点赞收藏评论&#xff0c;&#xff08;每人最多评论三次&#xff09; 本次送书1~3本【取决于阅读量&#xff0c;阅读量越多&#xff0c;送的越多】 活动时间至&#xff1a;2024-3-6 20:00:00 | 随机抽取由博主动态公布抽…

构建卓越容器安全流程:保障应用与基础设施的安全

在当今高度动态和云原生的应用环境中,容器技术的广泛应用为应用部署和扩展带来了巨大便利。然而,随之而来的挑战之一是如何确保容器环境的安全性,以应对不断演变的威胁。本文将介绍一套卓越的容器安全流程,以保障应用与基础设施的安全。 1. 容器镜像安全审查 卓越的容器安…

《国色芳华》争议不断,杨紫簪花妆惊艳全场,李现造型更是抢眼。

♥ 为方便您进行讨论和分享&#xff0c;同时也为能带给您不一样的参与感。请您在阅读本文之前&#xff0c;点击一下“关注”&#xff0c;非常感谢您的支持&#xff01; 文 |猴哥聊娱乐 编 辑|徐 婷 校 对|侯欢庭 猴哥来啦&#xff01;新剧《国色芳华》火热开拍&#xff0c;杨…

Mysql数据库管理系统学习笔记1——sql语句,DBMS,数据库的分类

mysql是一种数据库管理系统&#xff08;DBMS&#xff09;&#xff0c;data base manage system sql语句即为“structured query language”&#xff0c;结构化查询语言 数据库的分类&#xff1a;关系型数据库&#xff08;RDBMS&#xff09;与非关系型数据库 对于一些具有相同…

el-table通过这样封装可以实现校验-表格校验的原理

我们一般在后台系统中&#xff0c;很常见的操作时表格里面嵌套表单&#xff0c;之前我的网上找到了一些封装的用法&#xff1a; <el-form :model"formData" :rules"ruleData" ref"formDom"><el-table :data"formData.tableData&q…

美易全球投资中心:美股涨势倦怠,要预测顶部位置是不可能的

在过去的几个月里&#xff0c;美股市场一直处于涨势&#xff0c;但近期这种涨势似乎已经开始倦怠。高盛的分析师表示&#xff0c;尽管市场可能会出现波动&#xff0c;但目前没有明显的抛售诱因。他们也指出&#xff0c;预测市场的顶部位置是非常困难的&#xff0c;因为市场走势…

k8s pod理论

一、Pod概述 1、Pod的定义 Pod是K8S中创建和管理的最小单位。 2、一个Pod至少包含多少容器 1个pause容器&#xff08;基础容器/父容器/根容器&#xff09;和 1个或者多个应用容器&#xff08;业务容器&#xff09; 通常一个Pod最好只包含一个应用容器&#xff0c;一个应用容…

找不到FeignClient Bean对象的解决方法(两个)

当我们自己在编写独立的模块过着jar包的时候&#xff0c;在另外一个模块引用到这个依赖&#xff0c;若像是本例中的UserClient&#xff0c;是需要注入成Bean才能成功注入到Spring的IO容器中&#xff0c;从而成功调用。下面有两个解决方法&#xff1a; 问题&#xff1a; UserCl…

基于Redisson,实现分布式锁注解

1.原始写法 我们平常使用redisson的分布式锁是不是基本都用下面的这个模板&#xff0c;既然是模板&#xff0c;那为何不把他抽出来呢&#xff1f; // 尝试加锁&#xff0c;最多等待100秒&#xff0c;上锁以后10秒自动解锁 boolean res lock.tryLock(100, 10, TimeUnit.SECON…

华为OD技术面试案例5-2024年

背景 985本计算机专业&#xff0c;目标院校。 1.15 投递 在某BOSS上投递的简历&#xff0c;HR人很nice&#xff0c;非常负责任。 1.19 收到机试通知 第一题是一个哈夫曼编码&#xff0c;第三题是一个动态规划&#xff0c;机试整体难度不算高&#xff0c;刷leetcode hot100…

PTA——L2-016 愿天下有情人都是失散多年的兄妹(dfs)

文章目录 一、题目二、题解1.基本思路&#xff1a;2.代码&#xff1a; 一、题目 L2-016 愿天下有情人都是失散多年的兄妹 分数 25 全屏浏览 作者 陈越 单位 浙江大学 呵呵。大家都知道五服以内不得通婚&#xff0c;即两个人最近的共同祖先如果在五代以内&#xff08;即本人、…

react + umi中如何使用rem完成自适应布局

只要写css就可以实现&#xff1a;flex rem布局&#xff1b; 在项目的global.less中根据媒体查询&#xff1b; 媒体查询是用于根据设备的特性&#xff08;如屏幕尺寸、屏幕方向、分辨率等&#xff09;来应用不同的 CSS 样式的技术。以下是一些常用的媒体查询尺寸&#xff1a; 小…

WordPress分类目录ID怎么看?如何查找WordPress标签ID?

在WordPress网站中&#xff0c;我们需要判断某篇文章是否属于某个分类目录&#xff0c;或者是否拥有某个标签&#xff0c;那么就需要用到分类目录ID和标签ID&#xff0c;那么WordPress分类目录ID怎么看&#xff1f;如何查找WordPress标签ID&#xff1f;下面boke112百科就跟大家…

五、生成数字列表

输入描述&#xff1a; 输入一行整数&#xff0c;数字之间以空格间隔。 输出描述&#xff1a; 输出这些数字组成的完整列表。 示例1 输入&#xff1a; 1 2 3 4 5 复制输出&#xff1a; [1, 2, 3, 4, 5] numinput() list_strnum.split() int_list[int(i) for i in list_str…

Node.js基础---加载机制

模块的加载机制 1. 优先成缓存中加载 模块在第一次加载后会被缓存&#xff0c;意味着多次调用 require() 不会导致模块代码被多次执行 注意&#xff1a;无论是什么模块都会优先从缓存内加载&#xff0c;以提高加载效率 2. 内置模块的加载机制 内置模块是 Node.js官网提供的模块…