首页 > 其他分享 >L1-072 刮刮彩票

L1-072 刮刮彩票

时间:2024-11-19 19:15:30浏览次数:3  
标签:072 数字 刮开 nums int pos 玩家 彩票 L1

一、问题描述

“刮刮彩票”是一款网络游戏里面的一个小游戏。如图所示:

-362960_55cb6a89bf693.png

每次游戏玩家会拿到一张彩票,上面会有 9 个数字,分别为数字 1 到数字 9,数字各不重复,并以 3×3 的“九宫格”形式排布在彩票上。

在游戏开始时能看见一个位置上的数字,其他位置上的数字均不可见。你可以选择三个位置的数字刮开,这样玩家就能看见四个位置上的数字了。最后玩家再从 3 横、3 竖、2 斜共 8 个方向中挑选一个方向,方向上三个数字的和可根据下列表格进行兑奖,获得对应数额的金币。

数字合计获得金币数字合计获得金币
610,0001672
73617180
872018119
93601936
108020306
11252211,080
1210822144
1372231,800
1454243,600
15180

现在请你写出一个模拟程序,模拟玩家的游戏过程。

1. 输入格式

输入第一部分给出一张合法的彩票,即用 3 行 3 列给出 0 至 9 的数字。0 表示的是这个位置上的数字初始时就能看见了,而不是彩票上的数字为 0。

第二部给出玩家刮开的三个位置,分为三行,每行按格式 x y 给出玩家刮开的位置的行号和列号(题目中定义左上角的位置为第 1 行、第 1 列。)。数据保证玩家不会重复刮开已刮开的数字。

最后一部分给出玩家选择的方向,即一个整数: 1 至 3 表示选择横向的第一行、第二行、第三行,4 至 6 表示纵向的第一列、第二列、第三列,7、8分别表示左上到右下的主对角线和右上到左下的副对角线。

2. 输出格式

对于每一个刮开的操作,在一行中输出玩家能看到的数字。最后对于选择的方向,在一行中输出玩家获得的金币数量。

3. 输入样例

1 2 3
4 5 6
7 8 0
1 1
2 2
2 3
7

4. 输出样例

1
5
6
180


二、源码解答

#include <iostream>
using namespace std;
int main() {
    /**
     * 9个数字, 3 × 3的九宫格形式 => 二维数组nums[3][3]
     * 数字范围为1-9: 不重复
    */

    int nums[3][3];
    //索引为: award[数字合计 - 6] => 获得金币
    int award[19] = {
        10000, 36, 720, 360, 80, 252, 108, 72, 54, 180,
        72, 180, 119, 36, 306, 1080, 144, 1800, 3600
    };
    //map<int>
    /**
     * 初始能看见的位置: (pos_row, pos_col)
     * 1 2 3
       4 5 6
       7 8 0(9)
    */
    int pos_row = 0, pos_col = 0;
    //我们需要获取最开始能看见的位置对应的实际数字:注意到总和不变
    int total = 45;
    //输入九宫格内的数字
    for(int i = 0; i < 3; ++i) {
        for(int j = 0; j < 3; ++j) {
            cin >> nums[i][j];
            total -= nums[i][j];
            //最开始就能看见该数字
            if(nums[i][j] == 0) {
                pos_row = i;
                pos_col = j;
            }
        }
    }
    //赋值给最开始能看见的位置
    nums[pos_row][pos_col] = total;

    //开始刮数字
    for(int i = 1; i <= 3; ++i) {
        int x, y;
        cin >> x >> y;
        cout << nums[x - 1][y - 1] << endl;  //直接输出对应的数字即可
    }

    //各个方向
    int direction, sum = 0;
    cin >> direction;
    //横向的三行方向, 共同特征: 都是列在变, direction - 1即为行号
    if(direction <= 3) {
        for(int i = 0; i < 3; ++i) {
            sum += nums[direction - 1][i];
        }
    }
    //纵向的三列方向, 共同特征: 都是行在变, direction - 4即为列号
    else if(direction <= 6) {
        for(int i = 0; i < 3; ++i) {
            sum += nums[i][direction - 4];
        }
    }
    //从左上角到右下角的方向
    else if(direction == 7) {
        sum += nums[0][0] + nums[1][1] + nums[2][2];
    }
    //从右上角到左下角的方向
    else {
        sum += nums[0][2] + nums[1][1] + nums[2][0];
    }
    cout << award[sum - 6];
    return 0;
}

三、参考资料

PTA | 程序设计类实验辅助教学平台

标签:072,数字,刮开,nums,int,pos,玩家,彩票,L1
From: https://blog.csdn.net/weixin_65214650/article/details/143892950

相关文章

  • L1-079 天梯赛的善良
    一、问题描述天梯赛是个善良的比赛。善良的命题组希望将题目难度控制在一个范围内,使得每个参赛的学生都有能做出来的题目,并且最厉害的学生也要非常努力才有可能得到高分。于是命题组首先将编程能力划分成了106个等级(太疯狂了,这是假的),然后调查了每个参赛学生的编程能力。现......
  • Sigrity SPEED2000 SRC-SI Metrics Check模式如何进行信号时域性能仿真分析操作指导-L
    SigritySPEED2000SRC-SIMetricsCheck模式如何进行信号时域性能仿真分析操作指导-Level1&2-DDRSigritySPEED2000SRC-SIMetricsCheck模式如何进行信号时域性能仿真分析操作指导-Level3-高速差分详细介绍高速差分的SRC检查流程,下面以DDR为例,介绍SRC模式如何对并行BUS进......
  • 软件设计-Tutorial18
    packageTutorial18;importjava.util.ArrayList;importjava.util.Collections;importjava.util.Comparator;importjava.util.Iterator;importjava.util.List;//定义学生类classStudent{privateStringname;privateStringstudentId;privatein......
  • 软件设计-Tutorial19
    packageTutorial19;//中介者接口publicinterfaceMediator{voidsendMessage(AbstractChatRoomchatRoom,AbstractMembermember,Stringmessage);voidsendPicture(AbstractChatRoomchatRoom,AbstractMembermember,byte[]picture);}packageTutori......
  • 书生·共学大模型实战营L1G6000 XTuner微调
    任务描述:使用XTuner微调InternLM2-Chat-7B实现自己的小助手认知该任务分为数据集处理、微调训练、合并部署三个环节。数据处理:主要是将目标json文件中的字段替换为和自己用户名相关的字段,这里我们将“尖米”替换为“科研狗1031”:微调训练:采用教程中的XTuner框架,在InternStudi......
  • 书生·共学大模型实战营第4期 L1G4000任务提交
    基于LlamaIndex构建自己的RAG知识库,寻找一个问题A在使用LlamaIndex之前浦语API不会回答,借助LlamaIndex后浦语API具备回答A的能力我们选择了一个名为wereader的Github小众项目,这是一个Chrome/Firefox扩展,主要用于微信读书做笔记,对常使用Markdown做笔记的读者比较有帮助。可以发现......
  • nternLM Camp4 L1G600 OpenCompass 评测书生大模型实践
    本任务需要使用30%A100开发机文章目录前言一、使用OpenCompass评测浦语API1.环境配置2.模型配置3.数据集配置4.运行评测二、评测本地模型1.环境配置2.数据集下载3.加载本地模型进行评测三、将本地模型通过部署成API服务再评测前言本博客是第四期书生大模型......
  • 书生·共学大模型训练营第4期 L1G200任务提交
    MindSearch搜索引擎示例书生·浦语对话模型调用示例书生·万象开源视觉语言模型调用实例进阶任务:MindSearch话题挑战https://www.zhihu.com/people/zhang-shu-yang-92-96......
  • 「Mac玩转仓颉内测版12」PTA刷题篇3 - L1-003 个位数统计
    本篇将继续讲解PTA平台上的题目L1-003个位数统计,通过对数字的处理与统计,掌握基础的字符串操作与数组计数功能,进一步提升Cangjie编程语言的实际应用能力。关键词PTA刷题数字统计数组操作字符串处理编程技巧一、L1-003个位数统计题目描述:给定一个正整数,统计该数字中......
  • L1-025 正整数A+B
    目录一、问题描述二、问题分析 三、源码解答四、时空复杂度分析五、参考资料一、问题描述题的目标很简单,就是求两个正整数A和B的和,其中A和B都在区间[1,1000]。稍微有点麻烦的是,输入并不保证是两个正整数。1.输入格式输入在一行给出A和B,其间以空格分开。问题是A和B......