【C语言】数学挑战(小Z和跳跳棋)

相信你是最棒哒!!!

文章目录

一、重礼仪的贪心小Z

题目代码

二、跳跳棋

题目代码:

总结


提示:以下是本篇文章正文内容,下面案例可仅供参考

一、重礼仪的贪心小Z

问题描述

小Z最近在研究一种倒酒礼仪“步步高升”,以满足自己的好奇心需要。

现在有 𝑛n 个酒杯,编号分别为 1 到 𝑛n,在小郑自研的倒酒礼仪“步步高升”中,酒杯中的酒是递增的,也就是第 𝑖+1i+1 杯酒必须要比第 𝑖i 杯酒多,且每个酒杯不能为空。

但小Z没有多余的酒,但可以将某个杯子中的酒导入其他杯子中,并且可以倒无数次。当然,小Z也可以喝掉任意酒杯中任意单位体积的酒,以满足倒酒礼仪“步步高升”的需要。

其中,每个杯子的容量可以视为无限大的,且转倒、喝掉的酒单位体积数都为整数。

小Z想要在遵循倒酒礼仪的前提下喝到最多的酒,你可以求出小Z最多能喝到多少单位体积的酒吗?

输入格式

第一行 1 个整数 𝑛n,代表酒杯数量。

第二行 𝑛n 个整数 𝑎1,𝑎2,𝑎3...,𝑎𝑛a1​,a2​,a3​...,an​,代表酒杯中已经装了的单位体积值。

输出格式

输出一行,输出最多能喝到多少单位体积的酒。如果无法做到“步步高升”的要求,输出 -1,数据保证答案唯一。

样例输入 1

2
3 2

样例输出 1

2

样例输入 2

3
1 1 1

样例输出 2

-1

对于所有测评数据 ,1≤n≤100, 1≤ai≤10  


题目代码

解析版:

#include<stdio.h> int main() 
{int n, a[1000], i, min, sum=0; // min为计算出的最小酒量总和,sum用于累加酒量scanf("%d", &n); for (i = 0; i < n; i++) scanf("%d", &a[i]);min = 0.5 * n * (1+n); // 计算满足“步步高升”条件的最小酒量总和,即等差数列的和,首项为1,末项为nfor (i = 0; i < n; i++) // 循环累加所有酒杯中的酒量sum += a[i];if (sum < min) // 如果酒量的总和小于最小酒量总和,无法满足“步步高升”的要求printf("-1"); // 输出-1else // 否则printf("%d", sum - min); // 输出可以喝到的最多酒量,即总酒量减去最小酒量总和return 0; 

简洁版:

#include<stdio.h>
int main()
{int n, a[1000], i, min, sum=0;scanf("%d", &n);for (i = 0; i < n; i++)scanf("%d", &a[i]);min = 0.5 * n * (1+n);for (i = 0; i < n; i++)sum += a[i];if (sum < min)printf("-1");else printf("%d", sum - min);return 0;
}


二、跳跳棋

问题描述

  • 游戏棋盘是一个7x7的矩阵。
  • 棋子(1)只能跳过相邻的棋子到空位(0)上,并且吃掉被跳过的棋子。
  • 判断游戏是否结束,即无法再进行合法的跳棋操作。

输入格式

  • 输入数据占7行,每行代表棋盘的一行。
  • 每个位置上的数字为1或0,1表示有棋子,0表示没有。

输出格式

  • 如果游戏无法进行下去,输出"yes"。
  • 否则,输出"no"。

样例输入

000
001
0000001
0000000
0000101
000
000

样例输出 

yes

题目代码:

解析版:

#include<stdio.h>// 定义一个10x10的字符数组来存储棋盘状态,'1' 表示有棋子,'0' 表示没有棋子(定义成7×7的容易越界)
char a[10][10];int main() {int f = 0; // 用于标记是否存在可跳的棋子,初始为0,表示没有(flag)//1. 读取第1行和第2行数据for (int i = 1; i <= 2; i++) {for (int j = 3; j <= 5; j++) {scanf("%c", &a[i][j]);}getchar(); // 吸收换行符}   // 读取棋盘的第4行到第6行数据,实际是第3行到第5行数据for (int i = 3; i <= 5; i++) {for (int j = 1; j <= 7; j++) {scanf("%c", &a[i][j]);}getchar(); // 同样读取并丢弃换行符}// 读取棋盘的第7行和第8行数据,实际是第6行和第7行数据for (int i = 6; i <= 7; i++) {for (int j = 3; j <= 5; j++) {scanf("%c", &a[i][j]);}getchar(); // 读取并丢弃换行符}// 2. 遍历棋盘,检查是否有可跳的棋子for (int i = 1; i <= 7; i++) {for (int j = 1; j <= 7; j++) {if (a[i][j] == '1') { // 如果当前位置有棋子// 检查上下左右四个方向是否有可跳的棋子if (a[i - 1][j] == '1' && a[i - 2][j] == '0') {f = 1; // 如果可以跳,标记为1(如果有时间限制可以在每一个后面加上break;)}if (a[i + 1][j] == '1' && a[i + 2][j] == '0') {f = 1;}if (a[i][j - 1] == '1' && a[i][j - 2] == '0') {f = 1;}if (a[i][j + 1] == '1' && a[i][j + 2] == '0') {f = 1;}}}}// 根据标记判断游戏是否结束if (f == 0) {printf("yes"); // 如果没有可跳的棋子,输出"yes"} else {printf("no"); // 否则输出"no"}return 0; // 程序结束
}

简洁版:

#include<stdio.h>
char a[10][10];int main()
{int f = 0;for (int i = 1; i <= 2; i++){for (int j = 3; j <= 5; j++){scanf("%c", &a[i][j]);}getchar();}for (int i = 3; i <= 5; i++){for (int j = 1; j <= 7; j++){scanf("%c", &a[i][j]);}getchar();}for (int i = 6; i <= 7; i++){for (int j = 3; j <= 5; j++){scanf("%c", &a[i][j]);}getchar();}for (int i = 1; i <= 7; i++){for (int j = 1; j <= 7; j++){if (a[i][j] == '1'){if (a[i - 1][j] == '1' && a[i - 2][j] == '0'){f = 1;}if (a[i + 1][j] == '1' && a[i + 2][j] == '0'){f = 1;}if (a[i][j - 1] == '1' && a[i][j - 2] == '0'){f = 1;}if (a[i][j + 1] == '1' && a[i][j + 2] == '0'){f = 1;}}}}if (f == 0){printf("yes");}else{printf("no");}return 0;
}

二维数组中,外层循环表示行,内层循环表示列

这段代码首先定义了一个10x10的字符数组来存储棋盘状态,然后通过循环读取用户输入的棋盘数据。接着,它遍历棋盘,检查每个棋子是否有可跳的路径。如果找到可跳的棋子,就将标记f设置为1。最后,根据f的值判断游戏是否结束,并输出相应的结果。


总结

两个蓝桥题目,重礼仪的小Z 和 跳跳棋

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

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

相关文章

qt QPrinter详解

1、概述 QPrinter类是Qt框架中用于打印输出的绘图设备。它表示打印出来的一系列页面&#xff0c;并提供了一组附加功能来管理特定于设备的特性&#xff0c;比如方向和分辨率。QPrinter可以生成PDF文档&#xff0c;也可以将内容发送到打印机进行实际打印。它继承自QPagedPaintD…

FPGA实战篇(按键控制LDE实验)

1.按键简介 按键开关是一种电子开关&#xff0c;属于电子元器件类。我们的开发板上有两种按键开关&#xff1a;第一种是本实验所使用的轻触式按键开关&#xff0c;简称轻触开关。使用时以向开关的操作方向施加压力使内部电路闭合接通&#xff0c;当撤销压力时开关断开&#xff…

2023年华数杯数学建模B题不透明制品最优配色方案设计解题全过程文档及程序

2023年华数杯全国大学生数学建模 B题 不透明制品最优配色方案设计 原题再现&#xff1a; 日常生活中五彩缤纷的不透明有色制品是由着色剂染色而成。因此&#xff0c;不透明制品的配色对其外观美观度和市场竞争力起着重要作用。然而&#xff0c;传统的人工配色存在一定的局限性…

大数据:新型生产要素与数字经济发展的强劲引擎

大数据&#xff1a;新型生产要素与数字经济发展的强劲引擎 随着信息技术的飞速发展&#xff0c;大数据已经成为一种全新的生产要素&#xff0c;与土地、劳动力、资本和技术并驾齐驱&#xff0c;共同推动数字经济的发展。这一变革不仅重塑了经济格局&#xff0c;更为诸如十堰市…

PortSwigger 原型污染

一、什么是原型污染 原型污染是一种 JavaScript 漏洞&#xff0c;它使攻击者能够向全局对象原型添加任意属性&#xff0c;然后这些属性可能被用户定义的对象继承。 二、JavaScript 原型和继承基础 1、原型 JavaScript 中的每个对象都链接到某种类型的另一个对象&#xff0c;称…

【实战攻略】如何从零开始快速实现深度学习新想法?——四步走战略

标题 【实战攻略】如何从零开始快速实现深度学习新想法&#xff1f;——四步走战略 【核心结论】 通过四步走战略&#xff0c;即找到baseline论文、深入baseline代码、搭建自己的pipeline、融入核心算法&#xff0c;新手也能快速实现深度学习新想法。 【通俗解释&#xff0…

Qml之基本控件

一.Qml常用控件 1.Text(显示普通文本和富文本) 1.1显示普通文本&#xff1a; Window { visible: true width: 320 height: 240 title: qsTr("Hello World") Text { text: "Hello World!" font.family: "Helvetica" font.pointSize: 24 color:…

威联通-004 安装photoview相册应用Docker镜像

文章目录 前言准备MariaDB 10phpMyAdminphotoview 安装步骤1.安装MariaDB 10和phpMyAdmin2.初始安装MariaDB 103.进入phpMyAdmin添加账户4.手动下载photoview的Docker库注意&#xff1a;安装 phpMyAdmin 报错5.配置photoview6.容器安装成功之后进入photoview注意&#xff1a;这…

ScratchLLMStepByStep:一步一步构建大语言模型教程

前言 在学习大语言模型的时候&#xff0c;总会遇到各种各样的名词&#xff0c;像自注意力、多头、因果、自回归、掩码、残差连接、归一化等等。这些名词会让学习者听的云里雾里&#xff0c;觉得门槛太高而放弃。 本教程将会带你从零开始&#xff0c;一步一步的去构建每一个组…

6.824/6.5840 Lab 1: MapReduce

宁静的夏天 天空中繁星点点 心里头有些思念 思念着你的脸 ——宁夏 完整代码见&#xff1a; https://github.com/SnowLegend-star/6.824 由于这个lab整体难度实在不小&#xff0c;故考虑再三还是决定留下代码仅供参考 6.824的强度早有耳闻&#xff0c;我终于也是到了挑战这座高…

学习threejs,使用CubeCamera相机创建反光效果

&#x1f468;‍⚕️ 主页&#xff1a; gis分享者 &#x1f468;‍⚕️ 感谢各位大佬 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍⚕️ 收录于专栏&#xff1a;threejs gis工程师 文章目录 一、&#x1f340;前言1.1 ☘️CubeCamera 立方体相机 二、…

支持向量机(SVM)的解析与应用:从封闭解到时代演变 (中英双语)

中文版 支持向量机&#xff08;SVM&#xff09;的解析与应用&#xff1a;从封闭解到时代演变 什么是支持向量机&#xff08;SVM&#xff09;&#xff1f; 支持向量机&#xff08;Support Vector Machine, SVM&#xff09;是一种经典的监督学习算法&#xff0c;用于解决分类和…

HTML5系列(5)-- SVG 集成详解

前端技术探索系列&#xff1a;HTML5 SVG 集成详解 &#x1f3a8; 开篇寄语 &#x1f44b; 前端开发者们&#xff0c; 在前五篇文章中&#xff0c;我们探讨了 HTML5 的多个特性。今天&#xff0c;让我们深入了解 SVG 的魅力&#xff0c;看看如何创建可缩放的矢量图形。 一、…

变点问题的公式推导

背景与关键定义 变点检测问题 变点检测的目标是在给定的观测序列 y 1 , y 2 , … , y T y_1, y_2, \dots, y_T y1​,y2​,…,yT​ 中&#xff0c;找到一个或多个点&#xff08;变点&#xff09;&#xff0c;使得每段子序列&#xff08;即变点划分的区间&#xff09;能被一个较…

使用 useMemo 和 React.memo 优化 React 组件渲染

在 React 中&#xff0c;性能优化是一个重要的主题&#xff0c;特别是在复杂的组件树中。本文将演示如何在同一个父组件中使用 useMemo 和 React.memo 来优化子组件的渲染。 1. 组件结构 创建一个父组件&#xff0c;包含两个子组件&#xff1a; MemoChild&#xff1a;使用 R…

解决github网络慢的问题

前言 本文采用替换host的方式来加速github的git请求&#xff0c;主要我自己用来备份的懒人方式&#xff0c;不然每次都要手动修改hosts文件&#xff0c;skrskrskr… 一、获取到可用的ip 先到这个网站查询到低延迟的ip 站长工具&#xff1a;https://ping.chinaz.com/ 第2步&…

vue3【实战】多页签【组件封装】PageTabs (含右键快捷菜单组件封装 Contextmenu -- 关闭其他页签,关闭所有页签)

效果预览 技术方案 vue3 ( vite | TS | vueUse | AutoImport | pinia) Element Plus UnoCSS 技术要点 需开启 pinia 持久化右键菜单组件借助了 Element Plus 的样式 代码实现 src/components/PageTabs.vue <script setup lang"ts"> import { usePageTabsSto…

Scala的正则表达式

package hfdobject Test35_3 {def main(args: Array[String]): Unit {println("a\tb")//定义一个规则 正则表达式//1. .表示除了换行之外的其他的任意单个字符//2. \d等于[0-9] 匹配一个数字//3. \D除了\d之外的其他的任意字符&#xff0c;表示非数字//4. \w等价于[…

java的几种排序算法(详细)

冒泡排序&#xff08;Bubble Sort&#xff09; 基本原理&#xff1a; 冒泡排序是一种简单的比较排序算法。它重复地走访要排序的数列&#xff0c;一次比较两个元素&#xff0c;如果它们的顺序错误就把它们交换过来。走访数列的工作是重复地进行直到没有再需要交换&#xff0c;也…

vue项目env文件的使用(vue cli2和vue cli3)

Vue CLI 2 环境 在 Vue CLI 2 中&#xff0c;需要安装 dotenv 包来加载和使用环境变量。 步骤&#xff1a; 安装 dotenv&#xff1a;首先安装 dotenv 包 npm install dotenv --save创建 .env 文件&#xff1a;在项目的根目录下创建一个 .env 文件&#xff0c;并在其中定义你的…