钱币交换问题

毫米波雷达IWR1843开箱演示 阅读详情

题目:

给定 2×n 个方格组成的一行方格。除了两个相邻的空方格外,其余每个方格中都放入
了一枚金币或一枚银币。共有 n-1 枚金币和 n-1 枚银币。任何两个非空方格中的钱币可以移
动到两个相邻的空格中,但不能改变线币的排列顺序。金币变换问题要求用最少移动次数将
所有金币移到所有银币的左边。

 

解题:

1.bfs

2.利用位操作保存状态

 

bfs:

定义一个数据结构,保存当前空格的位置,和a或b的状态,如果(保存b的状态):

下面都是以abba..abab为例

高位 --> 低位
0000000000000000000000101000 0110

空格位置4,标记为红色

 

下面就可以移动了,钱币可以放到空格里,也就是说空格可以放到有钱币的地方。

空格移动到

0000000000000000000000101010 0100

交换,空格的位置为0

 

再枚举出所有可以移动的位置放入一个队列,并且保存这些已经枚举出来的状态。

 

判断结果:

利用位操作的方法,因为题目要求所有金币在所有银币的左边,也就是aaaabbbb,这时空格可以在任意_a_a_a_a_b_b_b_b_这9个地方。

先设r1:0000000000000000000000000000 1111

      r2:00000000000000000000000000111111

 

如果这时空格的位置>n, 则为aaaab_b_b_b_,                        

即r = 0000000000000000000000XXXXXX 0000, 则r1 & r = 0

如果空格的位置<n,则为_a_a_a_a_bbbb

即r = 00000000000000000000001111000000, 则r2 & r = 0

这样就判断结果了。

 

这个思想的原版本程序不是我写的,我只是在理解的基础上进行了一些封装,代码中调式信息,方便理解:

把 SAP S/4HANA 中的 Maintain Email Templates 用好:从模板维护、语言变体、业务绑定到传输治理的完整实践 摘要:SAP邮件模板管理常被低估,实则关乎审批通知、业务提醒等关键输出。官方推荐通过复制标准模板实现自定义,而非直接修改标准内容,以保持核心稳定。模板维护涉及语言变体、业务绑定、数据传输等治理环节,需业务顾问与开发团队协作确保字段来源与渲染逻辑。实施时需注意Fiori配置、权限分配及传输管理,避免测试与生产环境差异。模板设计应平衡灵活性与复杂度,遵循分层测试策略(内容、数据、流程),并建立命名规范以维护资产清晰度。(149字) 阅读详情

相关推荐

Win11下USB-Blaster驱动安装全攻略:Quartus用户必看(附常见问题解决)

本文详细介绍了在Windows 11系统下为Intel FPGA开发工具Quartus安装USB-Blaster驱动的完整流程与常见问题解决方案。针对Win11更严格的驱动签名验证机制,提供了从标准安装步骤到高级故障排查(如禁用驱动强制签名、使用测试模式)的实用指南,帮助用户快速解决驱动安装失败问题,确保FPGA编程调试顺利进行。

weixin_29256771的博客 657

【FJOI2015】金币换位问题

Description   桌子上有2N+2个位置,其中前N个位置放着N个正面朝上的硬币,接下来N个位置放着反面朝上的硬币,后面两个位置为空。   每次操作可以将任意两个相邻的硬币顺序不变地移动到空位上,那么至少要多少次操作可以将硬币移成正反相间(正面的硬币在第一个,最后两个还是空)。   例如:当N = 4时,有一组合法解如下:     11110000__     __1100001...

weixin_33816946的博客 258

新手学习Vivado XDMA (1) - 配置详细分析

PCIe 在 Vivado XDMA 中的配置分析。

qq_18553915的博客 9706

代码智能体如何应对项目级挑战?RepoMirage评估框架解析

在软件工程领域,代码智能体正逐渐从单文件辅助工具向项目级协作伙伴演进。其核心原理在于结合大型语言模型的代码理解能力与检索增强生成技术,通过分析代码库的结构、依赖关系和语义关联来提供智能编程支持。这一技术的价值在于能够显著提升开发效率,辅助开发者完成代码补全、bug修复和功能实现等复杂任务。然而,当应用于真实的、多文件、多依赖的软件项目时,智能体对仓库上下文的准确理解和推理能力面临严峻考验。RepoMirage评估框架通过模拟信息缺失、相关性混淆和结构破坏等“上下文幻象”,系统性地测试智能体在项目级任务中的鲁

594

微信小程序-如何根据缩放屏幕大小自适应icon图标更改marker

微信小程序如何根据用户的缩放屏幕来改变marker图标icon的大小,实现icon自适应屏幕缩放的效果

Bartender_VA11的博客 3980

终端效率神器:Tmux 安装与使用全指南

终端效率神器:Tmux 安装与使用全指南

身在被窝_心在编程 1357

GMOJ.1153【贪心算法】硬币交换

好难啊!!! 可聪明的我还是解出来了!(逃 题目描述 小z最近迷上了一款游戏――To Be A Farmer,他在游戏中控制的人物是一个叫FZ的Farmer。FZ身上有G1个金币、S1个银币和B1个铜币,而他至少需要G2个金币、S2个银币和B2个铜币。为了完成这个目标,小z只好控制FZ来到了游戏中的银行。银行有如下规定: (1)你可以用1个金币交换9个银币; (2)你可以用11个银币交换1个金币;...

Bill_liu2020的博客 760

S32DS IDE调试技巧:如何用Attach功能高效定位汽车电子MCU的Bootloader问题

本文详细介绍了在汽车电子MCU开发中,如何利用S32DS IDE的Attach调试模式高效定位Bootloader与应用程序的协同问题。通过对比常规调试与Attach模式的本质差异,并深入讲解工程配置、镜像合并及实战调试流程,帮助开发者在不复位、不重新下载程序的前提下,实时分析系统状态,快速解决内存映射冲突、中断向量表重定向等疑难杂症。

weixin_29168393的博客 265

金币问题

今年某公司的笔试题: 一个矩阵地图,每一个元素值代表金币数,玩家从左上角一直走到右下角,每次只能向下移动一格或是向右移动无数格后向下移动一格。当元素值为-1时,玩家无法移动到此格。玩家每移动到一格就可以获取这一格的金币数,求获得最大金币数。 很容易的一道动态规划题,动态转移方程 m[i][j] = max{m[i-1][j] + a[i][j], m[i-1][k] + a[i-1][j] ...

fuliang 850

嵌入式Linux开发:手把手教你调试OV9281摄像头Sensor(基于全志平台DTS配置)

本文详细解析了嵌入式Linux开发中OV9281摄像头Sensor的调试全流程,重点介绍了基于全志平台的DTS配置指南。从硬件信号检测到软件驱动配置,包括设备树关键参数设置、内核驱动适配实战及图像质量调优技巧,为开发者提供了一套完整的调试方案,助力工业视觉和边缘计算设备的开发。

weixin_28716769的博客 371

使用mne包来对脑电数据进行预处理(一)

MNE(MNE-Python)是一个用于处理脑电(EEG)、磁图(MEG)和其他神经科学数据的Python库。它提供了丰富的功能,包括数据加载、预处理、分析和可视化,旨在帮助研究人员和神经科学家更轻松地进行脑电数据的处理和分析。在本文中,我们使用mne来对不同的格式的脑电数据集进行数据读取。

m0_71596228的博客 4303

【BZOJ 1021】[SHOI2008]Debt 循环的债务

【题目链接】:http://www.lydsy.com/JudgeOnline/problem.php?id=1021 【题意】 【题解】 设f[i][j][k]表示前i种面值的钱币; 第一个人当前的钱数为j,第二个人当前的钱数为k; 所需要的最小交换钱币次数; 这里第三个人的钱数就是sum-j-k; 然后我们以钱币的种类划分成6个阶段进行这样...

AWCXV 159

SDR 和 DDR 的区别

SDR 和 DDR 的差别,最明显提现在传输速率和频率上。DDR SDRAM与SDRAM的基本结构是相似的,最根本的区别在于DDR 支持在一个时钟周期内传输两次数据,,SDR 只能传输一次数据。

串起点滴 1957

BZOJ 1021. [SHOI2008]Debt 循环的债务

传送门 考虑 $dp$,设 $f[i][j][k]$ 表示考虑了前 $i$ 种面值的钱,$Alice$ 现在有共 $j$ 元,$Bob$ 现在共有 $k$ 元时,的最少交换次数 那么 $Cynthia$ 的状态可以由总和减去 $Alice$ 和 $Bob$ 的状态得到 然后枚举每一种钱,枚举初末此种钱的张数,然后就可以转移,因为有很多状态是不合法的所以复杂度能过 枚举钱从大到小枚...

weixin_30667301的博客 155

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

BZOJ1021 [SHOI2008]Debt 循环的债务

貌似去年暑假就听过这道题。。。那时候还YY了个什么平面三条轴,夹角Π/3之类的。。。 正解嘛。。。当然是DP 令f[i][j][k]表示到了第i种面值,第一个人还有j元钱,第二个人还有k元钱的最少交换张数。 于是就是个背包问题的说,然后因为dp方程太复杂了,请参考程序吧。。。 (还有个非常厉害的剪枝我的程序没加,因为太懒了≥v≤。。。。。。誒!不要打我啊~~~都过了嘛好不好QAQ) ...

weixin_30241919的博客 112

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

bzoj1021 [SHOI2008]Debt 循环的债务(dp)

这题好难啊orz 我们考虑这个问题其实就是一开始A,B,C分别有sa,sb,sc的钱,总共n元,经过一波py,目标状态的A,B,C分别有ea,eb,ec的钱。问最少需要交换几张钱。 我们一种面额一种面额的考虑,显然不同面额之间互不影响。(而且你考虑的顺序其实可以是任意的,所以你可以按照张数从小到大来做。) 我们考虑dp,f[k][i][j],表示考虑前k种面额,A现在有i元,B现在有j元最少需

Icefox的博客 611

[BZOJ]1021 循环的债务

[BZOJ]1021题意:  给出三个人之间的欠钱关系和他们各自持有的钱币种类和个数,求能不能各自把钱还清,如果不能输出”Impossible”,如果能输出最小的给钱张数。题解:  Dp太神了!(弱菜自带遇Dp必跪flag)总之就是Dp。     可以按钱币种类划分阶段,那么方程可以为dp[i][j][k]dp[i][j][k]表示用上了前i种钱币,达到了让第一个人有j块钱,第二个人有k块钱(因为

sSay 1281

HDU1217:Arbitrage(SPFA)

题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=1217 题目大意 在每种钱币间进行各种交换,最后换回自己如果能赚,那么就Yes,否则No 注意应为有负权所以dijsktra在这里行不通了可以用国产的spfa算法,可比bfs。 我的AC代码 #include<iostream>#include<cstdio>#inc...

weixin_30394251的博客 88

CF 549G swap(前-1,后+1),问是否能变成递增序列(灵活题)

Do you like summer? Residents of Berland do. They especially love eating ice cream in the hot summer. So this summer day a large queue of n Berland residents lined up in front of the ice cream stall

芒果街上的小屋(此博客暂时停用) 626

计算机毕设设计项目源码 springboot钱币收藏在线评级及拍卖系统

项目目标。

2201_75937987的博客 1440

springboot钱币收藏交流系统的设计与实现

Java语言Java语言是目前最流行的语言之一,不仅可以做桌面窗口形式的程序,还可以做浏览器访问的程序,目前最流行的就是用Java语言作为基础,做各种程序的后台处理。Java语言是操作变量的语言,而变量则是Java对于数据存在形式的定义,变量用来操作内存,而内存则牵扯到计算机安全问题,这样Java语言反而有了免疫直接针对用Java语言开发出来的程序的病毒,有效的提高了Java语言开发出来程序的生存能力。

weixin_63982010的博客 1001

钱币收藏交流系统的设计与实现

本文设计并实现了一个基于Java Spring Boot框架的钱币收藏交流系统,旨在解决传统钱币收藏市场的信息不对称、交易渠道狭窄和真伪鉴定困难等问题。系统采用MySQL 5.7数据库存储数据,利用图像识别、大数据分析和区块链等技术提升钱币鉴定的准确性和交易安全性。开发环境包括JDK1.8、Tomcat7服务器和Maven3.3.9等工具,管理员可通过指定路径访问后台管理界面。系统不仅提供便捷的交易功能,还支持用户社交互动、藏品展示和个性化推荐,促进钱币文化的传播。该平台的实现顺应了文化产业数字化发展趋势,

weixin_63982010的博客 32

【t008】钱币变换问题

Time Limit: 2 second Memory Limit: 32 MB 【问题描述】 给定 2*n 个方格,将其排成一行。选择两个相邻的方格,设置为空方格,初始时不放钱币。而其余的方格共放入 n-1 枚金币和 n-1 枚银币,每个方格恰好放入1枚钱币。 平移操作:相邻的两个非空方格中的钱币可以平行移动到两个相邻的空方格中,但不能改变这两枚钱币...

AWCXV 258

[习题] 一、产生式系统·《人工智能导论》

终于系统地学习完“产生式系统”了,原来以前参加奥赛的时候就用到,是比较基础的,然而不知道原来这就是“产生式系统”,当然当时也没有学习原来还有正向、逆向、双向、可交换、可分解的产生是系统啦。这是课后的习题,比较简单,贴出来有兴趣的朋友想一下啦。 第一章 课后习题 1、对n=5、k≤3时,求解传教士和野人问题的产生式系统各组成部分进行描述(给出综合数据库、规则集合的形式...

weixin_30252155的博客 1861

最少钱币数-1-贪心算法(错在哪里)-编程练习题(50)

目录 题目: 分析: 贪心算法C++代码(有问题): 总结: 自己保存的编程练习题,可以看这里CG-OJ系统编程练习题。 题目: 最少钱币数 问题描述 这是一个古老而又经典的问题。用给定的几种钱币凑成某个钱数,一般而言有多种方式。例如:给定了 6 种钱币面值为 2、5、10、20、50、100,用来凑 15 元,可以用 5 个 2 元、1个 5 元,或者 3 个 5 ...

www.helloworld.com 4156
上一篇: 鸟哥linux(一)vi的操作摘录
下一篇: 一个简单程序的 gdb 反汇编 分析
LuckilyYu
博客等级 码龄20年 72粉丝 89原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值