C++ 剪刀石头布游戏2025 年 2 月 11 日 | 阅读 10 分钟 C++ 石头剪刀布游戏简介石头剪刀布 是一款经典的纸牌游戏,通常用作简单的决策工具。该游戏通常在两人之间进行,每位玩家同时伸出一只手,做出三种形状之一:石头、剪刀或布。规则很简单:石头赢剪刀,剪刀赢布,布赢石头。 在 C++ 中创建一个石头剪刀布游戏是初学者学习基本编程概念(如条件语句、循环和输入/输出操作)的绝佳项目。通过开发这个游戏,您将获得 C++ 基本语法和结构的实践经验,同时也能获得一些乐趣。 图像![]() 要遵循的游戏规则我们需要考虑三种情况
方法 1:简单方法实施输出 Enter your choice (0 = Rock, 1 = Paper, 2 = Scissors): Rock You chose: Rock Computer chose: Paper You lose! 说明
复杂度分析时间复杂度
总的来说,程序的时间复杂度为 O(1),因为所有操作都是常数时间。 空间复杂度 变量存储
枚举和常量
输入/输出操作
方法 2:使用类和对象在此方法中,我们使用面向对象编程 (OOP) 原则来实现石头剪刀布游戏。通过将游戏逻辑封装在类中,我们创建了一个模块化且可重用的设计。这种方法提供了更好的代码组织,并促进了封装和抽象等概念。 类和对象的实现输出 Enter your choice (0 = Rock, 1 = Paper, 2 = Scissors): Rock You chose: Rock Computer chose: Rock It's a tie! 说明
复杂度分析时间复杂度 生成计算机选择 getComputerChoice 函数生成随机数,这是一个常数时间操作,O(1)。 获取用户选择 getUserChoice 函数提示用户输入并读取它,这也是一个常数时间操作,O(1)。 打印选择 print choice 函数根据枚举值打印字符串,这是一个常数时间操作,O(1)。 确定赢家 determine winner 函数使用几个条件检查来确定赢家,这是一个常数时间操作,O(1)。 玩游戏 play 函数按顺序调用上述函数,每个函数都以常数时间运行,从而得出整体常数时间复杂度 O(1)。 空间复杂度 变量存储 游戏使用几个变量来存储用户的选择、计算机的选择以及方法中的任何临时变量。这些变量的数量是固定的,不依赖于任何输入大小,因此它们贡献固定的空间量,O(1)。 枚举和常量 类中定义的 Choice 枚举和任何常量的大小是固定的,并且不随输入大小而改变,贡献固定的空间量,O(1)。 输入/输出操作 输入和输出操作(例如,存储用户输入、打印到控制台)所需的空间最小且恒定,O(1)。 类开销 定义类及其方法的开销也是恒定的,不依赖于输入大小,贡献固定的空间量,O(1)。 方法 3:使用数组处理选择和结果这种方法利用数组来处理选择和结果,使代码更简洁、更具可伸缩性。 使用数组处理选择和结果的实现输出 Enter your choice (0 = Rock, 1 = Paper, 2 = Scissors): Rock You chose: Rock Computer chose: Paper You lose! 说明
复杂度分析时间复杂度 生成计算机选择 getComputerChoice 函数使用 rand() % 3 生成随机数,这是一个常数时间操作,O(1)。 获取用户选择 getUserChoice 函数提示用户输入并读取它,这也是一个常数时间操作,O(1)。 打印选择 打印用户和计算机的选择涉及从 choices 数组中访问元素并打印它们,这两个操作都是常数时间操作,O(1)。 确定赢家 determine winner 函数执行几次比较并根据游戏规则打印消息,所有这些都是常数时间操作,O(1)。 主函数操作 主函数中的操作,例如调用函数和打印结果,都以常数时间 O(1) 执行。 因此,程序的整体时间复杂度为 O(1),因为所有操作都以常数时间执行,与输入大小无关。 空间复杂度 变量存储 程序使用几个变量来存储用户选择、计算机选择以及比较结果。这些变量需要恒定的空间量,O(1)。 数组 choices 数组存储三个常量字符串(“石头”、“布”、“剪刀”),贡献固定的空间量,O(1)。 枚举和常量 此实现中除了 choices 数组外,没有使用枚举或常量,所有这些都占用固定的空间量,O(1)。 输入/输出操作 输入(用户选择)和输出(打印消息)操作所需的空间最小且恒定,O(1)。 因此,程序的整体空间复杂度为 O(1),因为它使用的内存量是固定的,并且不依赖于输入大小。 下一个主题C++ 中的笛卡尔树 |
Count Lonely Pixel II 问题涉及在由黑 ('B') 和白 ('W') 字符组成的二维网格中查找特定的黑色像素。如果满足两个条件,则黑色像素被称为孤独像素:它是唯一的...
阅读 12 分钟
矩阵操作是编程中的一项基本概念,广泛应用于计算机图形学、图像处理、数据分析甚至竞争性编程的算法挑战等领域。将二维矩阵旋转九十度是最常用的矩阵运算之一。程序员的工具箱...
阅读 10 分钟
? 枚举(通常称为 enums)是 C++ 的一个组成部分,它提供了一种定义命名整数常量的强大方法。虽然枚举增强了代码的可读性和可维护性,但在实际场景中,通常需要将这些枚举值转换为字符串。这种转换尤其重要,在以下情况下...
阅读 16 分钟
多边形数多年来一直引起人们的兴趣。一种称为三十边形数的数字与32边形(一种具有32条边的形状)相关。如果我们以特定的模式排列点,该集合中的所有数字都可以通过完全填充来表示...
7 分钟阅读
简介 本文的主要主题是 C++ 中的 std::exponential_distribution 类,它是标准库中用于生成指数分布随机数的相当有用的工具。当关注泊松过程中事件之间的时间时,这种分布很有应用价值……
阅读 6 分钟
在本文中,我们将讨论 C++ 中的自定义乱序单词游戏。乱序单词游戏的目的是为给定的字母序列设置动画,并在其中创建一个有效的单词。玩家会收到一个打乱顺序的单词,其中...
阅读 4 分钟
在本文中,我们将详细介绍在 C++ 中查找第 n 个埃尔米特数的程序。什么是埃尔米特数?埃尔米特数 Hn 是具有结果和的数类。埃尔米特数可以从下面的给定递归方程完全看出。它们...
阅读 4 分钟
从计算几何学这个庞大的领域中,出现了许多“看似简单”的问题,它们通过复杂的解决方案得到解决,并展示了数学推理的美丽和复杂性。确切地说,很难找到两个重叠矩形所覆盖的空间……
阅读 19 分钟
在本文中,我们将讨论其优点和缺点。什么是?罗瑟定理是数论的一个方面,侧重于素数的分布。它由 J. Barkley Rosser 于 1938 年开发,该定理提供了更精细的...
阅读 6 分钟
C++17,也称为 ISO/IEC 14882:2017,是 C++ 编程语言标准的第三次重大更新。官方发布日期是 2017 年 12 月。C++17 通过引入新的亮点、补充和增强来扩展 C++11 和 C++14 的方面。主要目标是...
阅读 4 分钟
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India