蓝桥杯专题-真题版含答案-【垒骰子_动态规划】【抽签】【平方怪圈】【凑算式】

这篇具有很好参考价值的文章主要介绍了蓝桥杯专题-真题版含答案-【垒骰子_动态规划】【抽签】【平方怪圈】【凑算式】。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

  • 点击跳转专栏=>Unity3D特效百例
  • 点击跳转专栏=>案例项目实战源码
  • 点击跳转专栏=>游戏脚本-辅助自动化
  • 点击跳转专栏=>Android控件全解手册
  • 点击跳转专栏=>Scratch编程案例
  • 点击跳转=>软考全系列
  • 点击跳转=>蓝桥系列

👉关于作者

专注于Android/Unity和各种游戏开发技巧,以及各种资源分享(网站、工具、素材、源码、游戏等)
有什么需要欢迎底部卡片私我,获取更多支持,交流让学习不再孤单

蓝桥杯专题-真题版含答案-【垒骰子_动态规划】【抽签】【平方怪圈】【凑算式】,蓝桥全系列,蓝桥杯,动态规划,职场和发展,认证考试,真题讲解

👉实践过程

需要所有整理的文档可底部卡片联系我,直接发压缩包。

😜垒骰子_动态规划

赌圣atm晚年迷恋上了垒骰子,就是把骰子一个垒在另一个上边,不能歪歪扭扭,要垒成方柱体。
经过长期观察,atm 发现了稳定骰子的奥秘:有些数字的面贴着会互相排斥!
我们先来规范一下骰子:1 的对面是 4,2 的对面是 5,3 的对面是 6。
假设有 m 组互斥现象,每组中的那两个数字的面紧贴在一起,骰子就不能稳定的垒起来。
atm想计算一下有多少种不同的可能的垒骰子方式。
两种垒骰子方式相同,当且仅当这两种方式中对应高度的骰子的对应数字的朝向都相同。
由于方案数可能过多,请输出模 10^9 + 7 的结果。

不要小看了 atm 的骰子数量哦~

「输入格式」
第一行两个整数 n m
n表示骰子数目
接下来 m 行,每行两个整数 a b ,表示 a 和 b 数字不能紧贴在一起。

「输出格式」
一行一个数,表示答案模 10^9 + 7 的结果。

「样例输入」
2 1
1 2

「样例输出」
544

#define MOD 1000000007

#include <map>
#include <vector>
#include <iostream>

using namespace std;

long long dp[2][7];//dp[i][j]表示有i层,限定朝上的数字为j的稳定方案数
int n, m;
bool conflict[7][7];
map<int, int> op;

void init() {
    op[1] = 4;
    op[4] = 1;
    op[2] = 5;
    op[5] = 2;
    op[3] = 6;
    op[6] = 3;
}

int main(int argc, const char *argv[]) {
    init();
    scanf("%d %d", &n, &m);
    for (int i = 0; i < m; ++i) {
        int a, b;
        scanf("%d %d", &a, &b);
        conflict[a][b] = true;
        conflict[b][a] = true;
    }
//    输入完成
    for (int j = 1; j <= 6; ++j) {
        dp[0][j] = 1;
    }

    int cur = 0;
//    迭代层数
    for (int level = 2; level <= n; ++level) {
        cur = 1 - cur;
//     尝试将6个面放在当前一层朝上的方向
        for (int j = 1; j <= 6; ++j) {
            dp[cur][j] = 0;
//            将与op[j]不冲突的上一层格子里面的数累加起来
            for (int i = 1; i <= 6; ++i) {
                if (conflict[op[j]][i])continue;//冲突的面朝上是不可取的
                dp[cur][j] = (dp[cur][j] + dp[1 - cur][i]) % MOD;
            }
        }
    }
    long long sum = 0;
    for (int k = 1; k <= 6; ++k) {
        sum = (sum + dp[cur][k]) % MOD;
    }

//    快速幂,求4的n次方
    long long ans = 1;
    long long tmp = 4;
    long long p = n;

    while (p != 0) {
        if (p & 1 == 1) ans = (ans * tmp) % MOD;
        tmp = (tmp * tmp) % MOD;
        p >>= 1;
    }
    printf("%d\n", (sum * ans) % MOD);
    return 0;
}

😜抽签

X星球要派出一个5人组成的观察团前往W星。
其中:
A国最多可以派出4人。
B国最多可以派出2人。
C国最多可以派出2人。

那么最终派往W星的观察团会有多少种国别的不同组合呢?

下面的程序解决了这个问题。
数组a[] 中是每个国家可以派出的最多的名额。
程序执行结果为:
DEFFF
CEFFF
CDFFF
CDEFF
CCFFF
CCEFF
CCDFF
CCDEF
BEFFF
BDFFF
BDEFF
BCFFF
BCEFF
BCDFF
BCDEF

(以下省略,总共101行)

#include <stdio.h>
#define N 6
#define M 5
#define BUF 1024

void f(int a[], int k, int m, char b[])
{
int i,j;

if(k==N){
	b[M] = 0;
	if(m==0) printf("%s\n",b);
	return;
}

for(i=0; i<=a[k]; i++){
	for(j=0; j<i; j++) b[M-m+j] = k+'A';
	______________________;  //填空位置
}

}
int main()
{
int a[N] = {4,2,2,1,1,3};
char b[BUF];
f(a,0,M,b);
return 0;
}

#include <stdio.h>
#define N 6
#define M 5
#define BUF 1024
int ans;
/*
 * k=a数组的下标,
 * m代表人数,初始为5
 * b字符串*/
void f(int a[], int k, int m, char b[])
{
    int i,j;

    if(k==N){
        b[M] = 0;//字符串结尾的标志
        if(m==0) {
            printf("%s\n",b);
            ans++;
        }
        return;
    }

    for(i=0; i<=a[k]; i++){//试着将k国家,派出i人
        for(j=0; j<i; j++) //填充buf,有i人就填i个国家符号(k+'A')
            b[M-m+j] = k+'A';
//        ______________________;  //填空位置
        f(a,k+1,m-i,b);
    }
}
int main()
{
    int  a[N] = {4,2,2,1,1,3};
    char b[BUF];
    f(a,0,M,b);
    printf("%d\n",ans);
    return 0;
}

😜平方怪圈

如果把一个正整数的每一位都平方后再求和,得到一个新的正整数。
对新产生的正整数再做同样的处理。

如此一来,你会发现,不管开始取的是什么数字,
最终如果不是落入1,就是落入同一个循环圈。

请写出这个循环圈中最大的那个数字。

请填写该最大数字。

#include <iostream>
#include <sstream>
using namespace std;

int extract(int start){
    string str;
    stringstream ss;
    ss<<start;
    ss>>str;
    int ans=0;
    for (int i = 0; i < str.length(); ++i) {
        ans+=(str[i]-'0')*(str[i]-'0');
    }
    return ans;
}
int main(int argc, const char * argv[]) {
    int start=3;
    int cnt=0;
    while(cnt<1000){
        cout<<start<<endl;
        int  sum =extract(start);

        start=sum;
        cnt++;
    }
    return 0;
}

😜凑算式

     B      DEF
A + --- + ------- = 10
     C      GHI

这个算式中AI代表19的数字,不同的字母代表不同的数字。

比如:
6+8/3+952/714 就是一种解法,
5+3/1+972/486 是另一种解法。

这个算式一共有多少种解法?

#include <iostream>
#include <cmath>
using namespace std;
int a[]={1,2,3,4,5,6,7,8,9};

int ans;
bool check(){
    int x = a[3] * 100 + a[4] * 10 + a[5];
    int y = a[6] * 100 + a[7] * 10 + a[8];
    if((a[1] * y + a[2] * x) % (y * a[2])==0 && a[0] + (a[1] * y + a[2] * x) / (y * a[2]) == 10)
        return true;
    return false;
}
/*递归回溯生成全排列,适用于无重复元素的情况
 * 考虑第k位,前面已经排定*/
void f(int k) {
    if(k==9){//一种排列已经生产
        if(check())
            ans++;
    }
//    从k往后的每个数字都可以放在k位
    for (int i = k; i < 9; ++i) {
        {int t=a[i];a[i]=a[k];a[k]=t;}
        f(k+1);//递归
        {int t=a[i];a[i]=a[k];a[k]=t;}//回溯
    }
}
int main(int argc, const char * argv[]) {
//    f(0);
    do{
        if(check())
            ans++;
    }while(next_permutation(a,a+9));
    cout<<ans<<endl;
    return 0;
}

👉其他

📢作者:小空和小芝中的小空
📢转载说明-务必注明来源:https://zhima.blog.csdn.net/
📢这位道友请留步☁️,我观你气度不凡,谈吐间隐隐有王者霸气💚,日后定有一番大作为📝!!!旁边有点赞👍收藏🌟今日传你,点了吧,未来你成功☀️,我分文不取,若不成功⚡️,也好回来找我。

温馨提示点击下方卡片获取更多意想不到的资源。
蓝桥杯专题-真题版含答案-【垒骰子_动态规划】【抽签】【平方怪圈】【凑算式】,蓝桥全系列,蓝桥杯,动态规划,职场和发展,认证考试,真题讲解文章来源地址https://www.toymoban.com/news/detail-602647.html

到了这里,关于蓝桥杯专题-真题版含答案-【垒骰子_动态规划】【抽签】【平方怪圈】【凑算式】的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 蓝桥杯专题-真题版含答案-【九宫幻方】【打鱼还是晒网】【阶乘尾数零的个数】【等差素数列】

    点击跳转专栏=Unity3D特效百例 点击跳转专栏=案例项目实战源码 点击跳转专栏=游戏脚本-辅助自动化 点击跳转专栏=Android控件全解手册 点击跳转专栏=Scratch编程案例 点击跳转=软考全系列 点击跳转=蓝桥系列 专注于 Android/Unity 和各种游戏开发技巧,以及 各种资源分享 (网站、

    2024年02月15日
    浏览(27)
  • 蓝桥杯专题-试题版含答案-【风险度量】【括号配对问题】【ASCII码排序】【素数求和】

    点击跳转专栏=Unity3D特效百例 点击跳转专栏=案例项目实战源码 点击跳转专栏=游戏脚本-辅助自动化 点击跳转专栏=Android控件全解手册 点击跳转专栏=Scratch编程案例 点击跳转=软考全系列 点击跳转=蓝桥系列 专注于 Android/Unity 和各种游戏开发技巧,以及 各种资源分享 (网站、

    2024年02月11日
    浏览(75)
  • 【蓝桥杯C/C++】专题六:动态规划

    在这里插入图片描述 本专题将讲解 最难理解 的算法之一:动态规划。介绍动态规划的基本概念、算法原理以及应用场景。首先,我们将介绍动态规划的定义和特点,以及它与递归、贪心算法的区别。接着,我们将详细介绍动态规划的解题思路和算法流程,包括状态转移方程

    2024年02月01日
    浏览(35)
  • 数字三角形-蓝桥杯真题动态规划PYTHON解法

    目录 题目描述  解题思路 DP初始化 DP最终条件 DP初始条件 题目限制条件 总代码 首先映入我们眼帘的就是一个三角形,加求路径和最大,类似于找最短路径的题,很明显是一个二维数组的动态规划问题,对于动态规划问题我们只需要找好最终条件,初始条件(也就是特殊条件

    2024年02月09日
    浏览(25)
  • 【动态规划】1223. 掷骰子模拟

    视频算法专题 有一个骰子模拟器会每次投掷的时候生成一个 1 到 6 的随机数。 不过我们在使用它时有个约束,就是使得投掷骰子时,连续 掷出数字 i 的次数不能超过 rollMax[i](i 从 1 开始编号)。 现在,给你一个整数数组 rollMax 和一个整数 n,请你来计算掷 n 次骰子可得到的

    2024年04月15日
    浏览(29)
  • 图论专题(各类算法和蓝桥杯真题例题)

    1.1.1 数组存边  1.1.2 临接矩阵存边  1.1.3 临接表存边 通过 DFS 和 BFS 遍历每一个图 对于非连通图,循环对每一个点 dfs 操作 也可以通过并查集来判断连通性 1.2.1全球变暖例题 1.3 欧拉路和欧拉回路  哈密顿回路:图中每个点通过且只通过一次 1.3.1欧拉路和欧拉回路判定      

    2024年02月03日
    浏览(502)
  • 掷骰子(从暴力搜索 到 记忆化搜索 到 动态规划)

    LeetCode上的 掷骰子模拟 题目描述通常如下: 题目:掷骰子模拟(Simulation of Dice Rolling) 原题链接 描述: 有一个骰子模拟器,每次投掷时都会生成一个1到6的随机数。不过,在使用这个模拟器时有一个约束条件:连续掷出数字i的次数不能超过rollMax[i](其中i从1开始编号)。

    2024年03月19日
    浏览(53)
  • (动态规划) 剑指 Offer 60. n个骰子的点数 ——【Leetcode每日一题】

    难度:中等 把 n 个骰子扔在地上,所有骰子朝上一面的点数之和为 s 。输入 n ,打印出s的所有可能的值出现的概率。 你需要用一个浮点数数组返回答案,其中第 i 个元素代表这 n 个骰子所能掷出的点数集合中第 i 小的那个的概率。 示例 1: 输入: 1 输出: [0.16667,0.16667,0.16667,

    2024年02月11日
    浏览(32)
  • 【LeetCode: 剑指 Offer 60. n个骰子的点数 | 数学+ 暴力递归=>记忆化搜索=>动态规划】

    🍎作者简介:硕风和炜,CSDN-Java领域新星创作者🏆,保研|国家奖学金|高中学习JAVA|大学完善JAVA开发技术栈|面试刷题|面经八股文|经验分享|好用的网站工具分享💎💎💎 🍎座右铭:人生如棋,我愿为卒,行动虽慢,可谁曾见我后退一步?🎯🎯🎯 剑指 Offer 60. n个骰子的点

    2023年04月19日
    浏览(45)
  • 题目3180:蓝桥杯2023年第十四届省赛真题-互质数的个数======及探讨互质专题

    https://www.dotcpp.com/oj/problem3162.html 已AC。 (1)首先大家要知道什么叫互质: 以及它们的性质: 在数论中,对正整数n,欧拉函数φ(n)是小于或等于n的正整数中与n互质的数的数目。此函数以其首名研究者欧拉命名,它又称为φ函数(由高斯所命名)或是欧拉总计函数(totient fu

    2023年04月24日
    浏览(32)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包