茶杯:N个杯子排成一排,第X个杯子藏有球,交换任意两个杯子K次后,找出藏球杯子位置。

news2025/1/19 7:58:05

N个杯子排成一排,第X个杯子藏有球,交换任意两个杯子K次后,找出藏球杯子位置。


(本文获得CSDN质量评分【85】)

【学习的细节是欢悦的历程】

  • Python 官网:https://www.python.org/

  • Free:大咖免费“圣经”教程《 python 完全自学教程》,不仅仅是基础那么简单……


  自学并不是什么神秘的东西,一个人一辈子自学的时间总是比在学校学习的时间长,没有老师的时候总是比有老师的时候多。
            —— 华罗庚


  • My CSDN主页、My HOT博、My Python 学习个人备忘录
  • 好文力荐、 老齐教室
等风来,不如追风去……


N个杯子排成一排,第X个杯子藏有球
茶 杯
(交换任意两个杯子K次后,找出藏球杯子位置)


本文质量分:

85
本文地址: https://blog.csdn.net/m0_57158496/article/details/128874661

CSDN质量分查询入口:http://www.csdn.net/qc


◆ 茶杯

在这里插入图片描述

1、题目描述

  将N个杯子排成一排,其中将球藏在第X个杯子中,交换任意两个不同杯子的位置。如果移动藏有球的杯子,球会随杯子一起移动。交换执行K次后,问球在哪个杯子中。


解题代码试炼截屏图片

在这里插入图片描述
加载time模块time()读取机器系统当前秒,计算用时。
在这里插入图片描述


回页目录

2、题目分析

  输入为k+1行数字字符串,第一行为英文空格分隔的n、x、k,后面k行的数字为依次交换杯子的位置。首先要对输入字符进行拆分,并还原成数字处理。球会随杯子移动,每次交换杯子都要追踪球的位置。完成k次交换后,输出球的位置完成解题。

2.1 输入数据解析

  • a. 解析n、x、k

  鉴于题目输入格式,用字符串的split()方法据回车换行符解析每行。进一步用split()解析第一行三个数据,map()函数实现整型转换和赋值。


    lis = string.split('\n') # 鉴于题目输入格式,用字符串的split方法据回车换行符解析每行。
    n, x, k = map(int, lis[0].split()) # 进一步解析第一行三个数据。

  • b. 遍历解析要交换杯子位置

  遍历解析茶杯移动的k行数据,用split()方法拆分每行整数,map()函数转整赋值。


    for i in range(k):
        a, b = map(int, lis[i+1].split()) # 遍历解析茶杯移动的k行数据。


回页目录

3、追踪藏球杯子

  用两个通道的if处理、并记录有球茶杯移动、交换茶杯后的新位置X。当前交换的杯子藏球,则藏球杯子会更新位置;无藏球,则藏杯子位置不变。


        if a == x: # 用两个通道的if处理,并记录有球茶杯移动交换茶杯后的新位置X。
            x = b
        elif b == x:
            x = a


回页目录

  

4、shif_teacup


def shift_teacup(input_string):
    ''' 交换任意茶杯找出藏球 '''
    lis = string.split('\n') # 鉴于题目输入格式,用字符串的split方法据回车换行符解析每行。
    n, x, k = map(int, lis[0].split()) # 进一步解析第一行三个数据。

    print(f"\n\n{'~'*50}\n茶杯移动过程:\n")

    for i in range(k):
        a, b = map(int, lis[i+1].split()) # 遍历解析茶杯移动的k行数据。
        
        if a == x: # 用两个通道的if处理,并记录有球茶杯移动交换茶杯后的新位置X。
            x = b
        elif b == x:
            x = a
        
        print(f"{i+1:>12}:{a}, {b},    X = {x}")
    
    return x # 返回有球茶杯的最终位置。


回页目录

  

5、完整源码

(源码较长,点此跳过源码)
#!/sur/bin/nve python
# coding: utf-8
from time import time # 载入time模块当前时间秒获取方法time。
start_sec = time() # 记录机器系统当前时间秒。


def shift_teacup(input_string):
    ''' 交换任意茶杯找出藏球 '''
    lis = string.split('\n') # 鉴于题目输入格式,用字符串的split方法据回车换行符解析每行。
    n, x, k = map(int, lis[0].split()) # 进一步解析第一行三个数据。

    print(f"\n\n{'~'*50}\n茶杯移动过程:\n")

    for i in range(k):
        a, b = map(int, lis[i+1].split()) # 遍历解析茶杯移动的k行数据。
        
        if a == x: # 用两个通道的if处理,并记录有球茶杯移动交换茶杯后的新位置X。
            x = b
        elif b == x:
            x = a
        
        print(f"{i+1:>12}:{a}, {b},    X = {x}")
    
    return x # 返回有球茶杯的最终位置。


if __name__ == '__main__':
    
    # 输入数据:
    in_s = '''3 2 4
1 3
3 2
3 1
2 3'''

    # 结果格式化输出:
    print(f"\n输入:\n{in_s}")
    print(f"\n\n{'~'*50}\n输出:\n{shift_teacup(in_s)}\n{'~'*50}\n{'':>16}程序用时 {time()-start_sec:.6f} 秒\n")


回页首

__上一篇:__ 两数之和(找出给定数组中和是给定目标整数的两个整数,输出找到的两个整数下标)

__下一篇:__ 

我的HOT博:

    • Hot:Python之魔幻切片(1207阅读)
    • 练习:数列求和a, aa, aaa, ..., aa...aa(n个a)(1206阅读)
    • 个人信息提取(1501阅读)
    • 十六进制字符串转Python代码(utf-8字符串转十六进制字符串)(1025阅读)
    • 生成100个随机正整数(1654阅读)
    • 给定字符串提取姓名(字符串、list、re“零宽断言”)(1244阅读)
    • 我的 Python.color() (Python 色彩打印控制)(1575阅读)
    • python清屏(2416阅读)
    • 回车符、换行符和回车换行符(2475阅读)
    • Linux 脚本文件第一行的特殊注释符(井号和感叹号组合)的含义(1481阅读)
    • random.sample()将在python 3.9x后续版本中被弃用(1346阅读)
    • pandas 数据类型之 Series(1507阅读)
    • 聊天消息敏感词屏蔽系统(字符串替换 str.replace(str1, *) )(1559阅读)
    • 练习:银行复利计算(用 for 循环解一道初中小题)(1494阅读)
    • pandas 数据类型之 DataFrame(3503阅读)
    • :班里有人和我同生日难吗?(蒙特卡洛随机模拟法)(2298阅读)
    • Python 续行符(\)“拯救”你的超长语句(1105阅读)
    • Python字符串居中显示(3663阅读)
    • 练习:求偶数和、阈值分割和求差( list 对象的两个基础小题)(1715阅读)
    • 用 pandas 解一道小题(2083阅读)
    • 可迭代对象和四个函数(1128阅读)
    • “快乐数”判断(1299阅读)
    • 罗马数字转换器(构造元素取模)(2392阅读)
    • Hot:罗马数字(转换器|罗生成器)(5256阅读)
    • Hot:让QQ群昵称色变的代码(44638阅读)
    • Hot:斐波那契数列(递归| for )(4169阅读)
    • 柱状图中最大矩形(1698阅读)
    • 排序数组元素的重复起止(1299阅读)
    • 电话拨号键盘字母组合(1485阅读)
    • 密码强度检测器(22227阅读)
    • 求列表平衡点(1891阅读)
    • Hot: 字符串统计(4362阅读)
    • Hot:尼姆游戏(聪明版首发)(3583阅读)
    • 尼姆游戏(优化版)(1258阅读)

    • 推荐条件 点阅破千


      回页首


      老齐漫画头像

      精品文章:

      • 好文力荐:齐伟书稿 《python 完全自学教程》 Free连载(已完稿并集结成书,还有PDF版本百度网盘永久分享,点击跳转免费🆓下载。)
      • OPP三大特性:封装中的property
      • 通过内置对象理解python'
      • 正则表达式
      • python中“*”的作用
      • Python 完全自学手册
      • 海象运算符
      • Python中的 `!=`与`is not`不同
      • 学习编程的正确方法

      来源:老齐教室


      回页首

      ◆ Python 入门指南【Python 3.6.3】


      好文力荐:

      • 全栈领域优质创作者——寒佬(还是国内某高校学生)博文“非技术文—关于英语和如何正确的提问”,“英语”和“会提问”是学习的两大利器。

      • 【8大编程语言的适用领域】先别着急选语言学编程,先看它们能干嘛

      • 靠谱程序员的好习惯


      CSDN实用技巧博文:

      • 8个好用到爆的Python实用技巧
      • python忽略警告
      • Python代码编写规范
      • Python的docstring规范(说明文档的规范写法)

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

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

    相关文章

    Idea JSP 学习

    运行JSP文件首次使用Idea运行jsp文件遇到的问题汇总。运行出现404错误。首先配置好Tomcat,我选用的是Tomcat 10.0.27.安装好Tomcat,并进行相关配置。我用的是IDEA2020.2.3 x64版本,不同版本会有区别。这是我的以上配置,特别注意下图三角标识的test.jsp。…

    【JavaEE】单例模式详解

    目录 一、单例模式的概念 二、饿汉模式 三、懒汉模式 (1)懒汉模式-单线程版 (2)懒汉模式-线程安全多线程版 啥是设计模式咧🤔设计模式好比象棋中的棋谱。红方当头炮,黑方马来跳👣。针对红方…

    鸿蒙开发学习|HarmonyOS是什么

    鸿蒙开发学习 第一章 HarmonyOS是什么文章目录鸿蒙开发学习前言一、什么是HarmonyOS二、HarmonyOS系统架构2.1 内核层2.2系统服务层2.3框架层2.4应用层三、HarmonyOS系统特性3.1 对消费者3.2.对应用开发3.3.对设备开发四、HarmonyOS系统四大技术特性4.1 分布式架构首次用于终端…

    LabVIEW最大内存块属性不存在

    LabVIEW最大内存块属性不存在在NI Linux实时操作系统目标中使用系统属性节点和分布式系统管理器(DSM),但遇到一些问题:它未正确报告系统上的可用物理内存量。在NI Linux实时系统上出现错误-2147220623尝试在NI Linux实时上监测RAM…

    webpack自动化打包

    webpack自动化打包 首先下载包 npm i webpack-dev-server -D 配置 webpack.config.js const path require(path)//nodejs核心模块,专门用来处理路径问题 const ESLintPlugin require(eslint-webpack-plugin) const HtmlWebpackPlugin require(html-webpack-p…

    java-加密、解密算法

    rsa2048、sha256 rsa2048对整个文件进行hash算法,生成公钥、私钥后用于数字签名, sha256通过公钥和私钥,作为证书使用。单板打包后对每个动态库sha256计算颁发证书 sha256签名后,rsa2048进行加密。签名用于校验加密数据没有被更…

    初始化一个vite+vue3项目,配置eslint+Prettier

    引用vite官网的一段话,解释一下我们为什么要选择使用vite 时过境迁,我们见证了诸如 webpack、Rollup 和 Parcel 等工具的变迁,它们极大地改善了前端开发者的开发体验。 然而,当我们开始构建越来越大型的应用时,需要处…

    Java后端数据校验学习总结

    Java后端校验总结 后端校验注解一直在用,但是感觉不是特别清楚,希望通过写这篇文章搞清楚。 Spring自带的Validation校验框架 Spring提供了Validator接口来校验对象,主要涉及到的方法和类如下: supports方法:设置校…

    win11任务栏图标闪烁|任务栏QQ图标闪动|新消息任务栏自动弹出|设置自动隐藏任务栏之后,QQ或微信等工具新消息自动弹出任务栏并颜色提示问题解决方案

    背景介绍: 今天正常使用电脑时也出现消息弹出问题(已经设置隐藏任务栏),很头疼那么时什么情况,该如何组去解决呢?(微信任务栏闪动未读消息) MyDockFinder Windows 桌面美化工具 目录 背景介绍 解决问题 微信环境测试 初始界面(微信) 打开微信 …

    PostMan简介2022黑马跟学

    2022黑马PostMan简介跟学1.PostMan工具的使用1.1 PostMan简介1.2 PostMan安装1.3 PostMan使用1.3.1 创建WorkSpace工作空间1.3.2 发送请求(1).以百度为例发送get请求(2).以百度为例发送post请求1.3.3 保存当前请求1.3.4 创建server端1.PostMan工具的使用 1.1 PostMan简介 代码…

    运算放大电路(三)-加法器

    加法器 由虚短知: V- V 0 ……a 由虚断及基尔霍夫定律知,通过R2与R1的电流之和等于通过R3的电流,故 (V1 – V-)/R1 (V2 – V-)/R2 (Vout – V-)/R3 ……b 代入a式,b式变为 V1/R1 V2/R2 Vout/R3 如果取 R1R2R3 则上式变为 Vo…

    ideal整合reids实现缓存查询

    目录 前言: 一.工作流程 二. RedisConfig类 三.application.properties 四.开启linux中的redis 五.使用redis结合数据库进行数据查询 5.1编程式缓存 5.2声明式缓存 5.2.1在启动类上添加注解 5.2.2实现代码 六.运行结果 ​编辑 前言: 废话不多讲…

    Java文件读写和CSV文件解析(读取csv文件的一列或若干列)

    文件类 Java 读文件流的知识不可少,先复习一下吧! OREACLE JDK8 DOCS 文件类是Java IO的一个对象,用于指定文件的相关信息,位置和名称信息。如txt文件,csv文件对Java来说就是一个文件类。 开发手册中指出&#xff0…

    Android实战场景 - 保存WebView中的图片到相册

    去年同事写了一个 “在H5中保存图片到相册” 的功能,虽然有大致实现思路,实现起来也没问题,但是感觉同事考虑问题的很周全,当时候就想着去学习一下,但是项目太赶没顾得上,索性现在有时间,准备好…

    2023-02-01 读书笔记:《有趣的统计》-1-基础知识

    2023-02-01 读书笔记:《有趣的统计》-1-基础知识 75招学会数据分析 —— 2014 Doctor.Bruce Frey 序 统计学: 最初,用于确定某些事情发生的可能性;不断发展,根据样本数据准确推断总体数据特征的方法(推…

    c语言基础之分支和循环语句

    c语言基础之分支和循环语句分支语句和循环语句什么是语句?if语句switch语句在switch语句中的 breakwhile循环while语句中的break和continuefor循环break和continue在for循环中do...while()循环goto语句写在最后:📌————本章重点————&a…

    全球疫情期间的校园招聘:可以学到的6个教训

    疫情放开后,校园招聘逐渐回暖,谁能率先有效整合线上线下校招,企业将从一开始就处于战略领先地位。下面梳理了全球招聘团队在疫情期间的6个校招教训,希望对你有启发。01重新规划线上工具的应用玩法现如今,学生已通过网课…

    【C++提高编程】vector容器详解(附测试用例与结果图)

    目录1.vector容器1.1 vector基本概念1.2 vector构造函数1.3 vector赋值操作1.4 vector容量和大小1.5 vector插入和删除1.6 vector数据存取1.7 vector互换容器1.8 vector预留空间1.vector容器 1.1 vector基本概念 功能: vector数据结构和数组非常相似,…

    【C++】类和对象(上)

    文章目录1. 面向过程和面向对象的初步认识2. 类的引入3. 类的定义4. 类的访问限定符及封装4.1 访问限定符4.2 封装5. 类的作用域6. 类的实例化7. 类对象模型7.1 如何计算对象的大小7.2 类对象的存储方式7.3 结构体内存对齐规则8. this指针8.1 this指针的引出8.2 this指针的特性…

    性能技术分享|Jmeter+InfluxDB+Grafana搭建性能平台(二)

    二、CentOS安装:方式一:把下载的.rpm包推送到服务器上;方式二:直接命令行安装#下载wget https://dl.influxdata.com/influxdb/releases/influxdb-1.7.1.x86_64.rpm#安装yum localinstall?influxdb-1.7.1.x86_64.rpm -y2.3 修改配…