抢十八游戏

embedded/2025/1/15 20:26:46/

前言

我国民国一直流传着一个名叫“抢十八”的抢数游戏:参与游戏的两人从1开始轮流报数,每次至少报1个数,最多报2个数,每人报的每个数不得与自已报过的或对方报过的重复,也不得跳过任何一个数。谁先报到18,谁就获胜。

玩法策略

在“抢十八”游戏中,取胜的关键在于每次报数时抢到关键数3、6、9、12、15、18‌。具体策略如下:

  1. 关键数策略‌:在“抢十八”游戏中,关键数包括3、6、9、12、15、18。玩家需要确保在每次报数时抢到这些关键数,从而控制游戏的进程。例如,要抢到18,之前必须抢到15,只留给对方3个数;同理,要抢到15,之前必须抢到12,以此类推‌12。

  2. 倒推法‌:通过倒推法可以找到这些关键数。最后要抢到18,之前必须抢到15,再之前必须抢到12,以此类推,直到3。这样,玩家可以确保在每一步都抢到关键数,直到最后抢到18‌23。

  3. 后报数者的优势‌:由于报数顺序决定了最后的结果,后报数者有必胜策略。后报数者每次都需要抢到这些关键数,直到最后抢到18‌23。

通过以上策略,玩家可以在“抢十八”游戏中取得胜利。

思路

此代码是游戏,并无思路。

代码解决

/*头文件部分*/
#include <iostream>
#include <windows.h>
#include <random>
/*定义变量部分*/
using namespace std;
long long number_off, count, target;
long long Number_of_player_victories = 0, Number_of_computer_victories = 0;
/*玩家报数函数部分*/
static void Player_reports() {number_off = 0;while (number_off <= 0) {cout << "当前" << number_off << ",请报增量:";cin >> number_off;if (number_off < 1 || number_off > 2) {cout << "请重新报数";number_off = 0;system("pause");system("cls");}else if (number_off + ::count > target) {cout << "请重新报数";number_off = 0;system("pause");system("cls");}}::count += number_off;cout << "玩家报数:" << ::count;system("pause");system("cls");
}
/*计算机报数函数部分*/
static void Computer_reporting() {if ((target - ::count) % 3 == 2)number_off = 2;elsenumber_off = 1;::count += number_off;cout << "计算机报数:" << ::count;system("pause");system("cls");
}
/*主函数部分*/
int main() {target = 18; //这里可以修改::count = 0;cout << "游戏开始..." << endl;system("pause");system("cls");std::random_device rd;std::mt19937 gen(rd());std::uniform_int_distribution<> distrib(1, 2);int random_number = distrib(gen);if (1 == random_number)Computer_reporting();while (::count != target) {Player_reports();if (::count == target)cout << "你赢了一局!" << endl;else {Computer_reporting();if (::count == target)cout << "计算机赢了一局!" << endl;}}return 0;
}


http://www.ppmy.cn/embedded/154185.html

相关文章

ros2笔记-6.5 使用ros2_control驱动机器人

ros2_control 是使用ros2进行机器人控制的框架。简化硬件的集成。 6.5.1 ros2_control安装 为什么要用ros2_contrl.书上、视频上小鱼老师介绍的比较清楚&#xff0c;这里放个control框架图。 安装&#xff1a; sudo apt install ros-$ROS_DISTRO-ros2-control sudo apt ins…

【C++学习篇】红黑树 从入门到进阶

目录 1.红黑树的概念 1.1红黑树的规则 1.2红黑树的效率 2. 红黑树的实现 2.1 红黑树的结构 2.2红黑树的插入 2.2.1红黑树插入&#xff0c;旋转的一些细节 2.2.1.1 u&#xff08;uncle&#xff09;不存在 &#xff0c;c为p的左孩子&#xff08;单旋变色&#xff09; 2.2.…

springmvc的获取请求数据

在使用 SpringMVC 开发 web 应用时&#xff0c;我们经常需要从用户的请求中获取数据。不管是表单提交、查询参数&#xff0c;还是路径上的数据&#xff0c;SpringMVC 都为我们提供了简单而强大的方式来获取这些数据。 1. 使用 RequestParam 获取查询参数 基本使用&#xff1a…

C语言基本知识复习浓缩版:控制语句--分支

选择结构 if语句 if控制语句 #include <stdio.h>int main() { int hour; float money; printf("请输入上网小时数&#xff1a;"); scanf("%d", &hour); if (hour <10) { money 30; }else if (hour >10 && hour <50) { mone…

C# PDF下载地址转图片(Base64 编码)

实现思路&#xff1a; 步骤一、根据PDF地址下载pdf文件保存为临时文件&#xff0c;获得pdf文件的byte[]数组 /// 从指定的 URL 下载 PDF 文件public byte[] DownloadPdf(string url){try{using (WebClient client new WebClient()){return client.DownloadData(url);}}catc…

Codeforces Round 976 (Div. 2) and Divide By Zero 9.0(A-E)

链接&#xff1a;Dashboard - Codeforces Round 976 (Div. 2) and Divide By Zero 9.0 - Codeforces A. Find Minimum Operations 思路 可以观察发现这里有个进制的思想&#xff0c;转换为k进制把每位数相加即可 代码 void solve(){int n,k;cin>>n>>k;if(k1){…

CSS语言的语法

CSS语言的语法与应用 CSS&#xff08;层叠样式表&#xff0c;Cascading Style Sheets&#xff09;是一种用于描述网页文档外观的样式表语言。它主要用于网页的设计和布局&#xff0c;与HTML&#xff08;超文本标记语言&#xff09;相辅相成。通过CSS&#xff0c;我们可以控制网…

用AI技术提升Flutter开发效率:ScriptEcho的力量

引言 在当今快速发展的技术时代&#xff0c;Flutter作为一种跨平台开发框架&#xff0c;正在越来越多的开发者中崭露头角。它不仅能够为开发者提供一套代码同时部署到iOS和Android平台的解决方案&#xff0c;还能帮助企业节省人力成本和开发时间。然而&#xff0c;对于新手开发…