第七届蓝桥杯大赛个人赛省赛(软件类 C语言b组)真题 (个人解题思路)

2023-10-30

1.煤球数目
有一堆煤球,堆成三角棱锥形。具体:
第一层放1个,
第二层3个(排列成三角形),
第三层6个(排列成三角形),
第四层10个(排列成三角形),
....
如果一共有100层,共有多少个煤球?


请填表示煤球总数目的数字。

注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字。


思路:

可以说这是一道打卡题。先找出规律,发现第n层的煤球数量是:1+2+3+4+...+n   即(1+n)*n/2

故100层中所有的煤球数可以用枚举的方法暴力解出,首先sum=1,然后for循环从2开始套用(1+n)*n/2,累加,即可得出煤球总数量

#include<stdio.h>

int main()
{
	int i,sum=1;
	for(i=2;i<=100;i++)
	{
		sum+=(1+i)*i/2;
	}
	printf("%d",sum);
	return 0;	
	
} 
答案:171700


2.生日蜡烛


某君从某年开始每年都举办一次生日party,并且每次都要吹熄与年龄相同根数的蜡烛。


现在算起来,他一共吹熄了236根蜡烛。


请问,他从多少岁开始过生日party的?


请填写他开始过生日party的年龄数。
注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字。


思路:

也是一道打卡题,运用数学知识:

设n岁开始过生日,到现在最近的一次生日算是a岁(假设a,n的范围都在0到150)

蜡烛总数:(n+a)*(a-n+1)/2


#include<iostream>

using namespace std;

int main()
{
	int n,a;
	for(n=0;n<=150;n++)
	{
		for(a=n;a<=150;a++)
		{
			if((n+a)*(a-n+1)/2==236)
				cout<<n;	
		}	
	}
	return 0;	
} 
答案:26



3.凑算式


     B      DEF
A + --- + ------- = 10
     C      GHI
     
(如果显示有问题,可以参见【图1.jpg】)
 
 
这个算式中A~I代表1~9的数字,不同的字母代表不同的数字。


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


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


注意:你提交应该是个整数,不要填写任何多余的内容或说明性文字。

思路:直接上循环,BF暴搜

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

int main()
{
	double a,b,c,count=0;
	int k[10];
	memset(k,0,sizeof(k));
	
	for(int A=1;A<=9;A++)
	{
		a=A;
		
		for(int B=1;B<=9;B++)
		{
			for(int C=1;C<=9;C++)
			{
				b=B*1.0/C;	
				for(int D=1;D<=9;D++)
				{
					for(int E=1;E<=9;E++)
					{
						for(int F=1;F<=9;F++)
						{
							for(int G=1;G<=9;G++)
							{
								for(int H=1;H<=9;H++)
								{
									for(int I=1;I<=9;I++)
									{
										c=(D*100+E*10+F)*1.0/(G*100+H*10+I);
										memset(k,0,sizeof(k));  //重新初始化 
										k[A]++; k[B]++; k[C]++; k[D]++; k[E]++;
										k[F]++; k[G]++; k[H]++; k[I]++;
									
									    if((a+b+c)==10 && k[A]==1 && k[B]==1 && k[C]==1 && k[D]==1 
										     &&k[E]==1 && k[F]==1 && k[G]==1 && k[H]==1 && k[I]==1)
											count++;
									/*if(a!=b&&a!=c&&a!=d&&a!=e&&a!=f&&a!=g&&a!=h&&a!=i&&  
                                                    b!=c&&b!=d&&b!=e&&b!=f&&b!=g&&b!=h&&b!=i&&  
                                                    c!=d&&c!=e&&c!=f&&c!=g&&c!=h&&c!=i&&  
                                                    d!=e&&d!=f&&d!=g&&d!=h&&d!=i&&  
                                                    e!=f&&e!=g&&e!=h&&e!=i&&  
                                                    f!=g&&f!=h&&f!=i&&  
                                                    g!=h&&g!=i&&i!=h&&(a + b*1.0/c + (d*100+e*10+f)*1.0/(g*100+h*10+i)==10)){ count++;}*/
									}
								}
							}
						}
					}
				}
			}
		}
	}
	cout<<count<<endl;
	return 0;
 } 

2.DFS 深度优先搜索

 

#include<iostream>
using namespace std;

int a[10];
bool vis[10];
int count=0;

void fun()
{
	double  A,B,C;
	A=a[0];
	B=a[1]*1.00/a[2];
	C=(a[3]*100+a[4]*10+a[5])*1.00/(a[6]*100+a[7]*10+a[8]);
	if((A+B+C)==10.0)
		count++;		
}

void dfs(int n)
{
	if(n==9)
	{
		fun();
		return ;		
	}
	
	for(int i=1;i<10;i++)
	{
		if(!vis[i])
		{
			vis[i]=true;
			a[n]=i;
			dfs(n+1);
			vis[i]=false;
		}
	}	
}
int main()
{
	dfs(0);
	cout<<count<<endl; 
	return  0;
} 




4.快速排序

排序在各种场合经常被用到。

快速排序是十分常用的高效率的算法。

 

其思想是:先选一个标尺

用它把整个队列过一遍筛子,

以保证:其左边的元素都不大于它,其右边的元素都不小于它。

 

这样,排序问题就被分割为两个子区间。

再分别对子区间排序就可以了。

 

下面的代码是一种实现,请分析并填写划线部分缺少的代码。


#include<stdio.h>

voidswap(int a[], inti, int j)

{

   int t = a[i];

   a[i] = a[j];

   a[j] = t;

}

 

intpartition(int a[],int p, int r)

{

   int i = p;

   int j = r + 1;

   int x = a[p];

   while(1){

       while(i<r && a[++i]<x);

       while(a[--j]>x);

       if(i>=j) break;

       swap(a,i,j);

   }

   ______________________;

   return j;

}

 

voidquicksort(int a[],int p, int r)

{

   if(p<r){

       int q = partition(a,p,r);

       quicksort(a,p,q-1);

       quicksort(a,q+1,r);

   }

}

   

intmain()

{

   int i;

   int a[] = {5,13,6,24,2,8,19,27,6,12,1,17};

   int N = 12;

   

   quicksort(a, 0, N-1);

   

   for(i=0; i<N; i++) printf("%d ", a[i]);

   printf("\n");

   

   return 0;

}

 

思路: p作为标识一直没有改变,而i在自增,j在自减,

当最后一次执行for循环里的while语句时,--j后j变成了小于标识的元素,++i变成了大于标识的元素

此时if语句执行,break退出循环    答案swap(a,p,j)将a[j](值小于标识元素a[p])与a[p]互换,使得j处于中间位置

答案:swap(a,p,j)



5.抽签


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';     //由循环退出条件可知,退出时j=i
		______________________;  //填空位置   
	}
}
int main()
{	
	int  a[N] = {4,2,2,1,1,3};   //每个国家可以派出的人数
	char b[BUF];			//分配情况
	f(a,0,M,b);
	return 0;
}

思路:仔细思考发现只有递归可以满足101种情况

 答案:   f(a,k+1,M-j,b);

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

第七届蓝桥杯大赛个人赛省赛(软件类 C语言b组)真题 (个人解题思路) 的相关文章

  • 蓝桥杯跑步锻炼

    问题描述 小蓝每天都锻炼身体 正常情况下 小蓝每天跑 1 千米 如果某天是周一或者月初 1 日 为了 激励自己 小蓝要跑 2 千米 如果同时是周一或月初 小蓝也是跑 2 千米 小蓝跑步已经坚持了很长时间 从 2000 年 1 月 1 日周六
  • 青蛙过河 蓝桥杯 2097

    问题描述 小青蛙住在一条河边 它想到河对岸的学校去学习 小青蛙打算经过河里 的石头跳到对岸 河里的石头排成了一条直线 小青蛙每次跳跃必须落在一块石头或者岸上 不过 每块石头有一个高度 每次小青蛙从一块石头起跳 这块石头的高度就 会下降 1
  • 一种关于单片机定时器中断和数码管冲突问题的解决方案

    问题发现 我们会发现 同时存在定时器中断和数码管操作时 有时会导致数码管显示异常 原因探究 在定时器中断函数中不要操作P2和P0 因为定时器 T 和主板 M 的时钟频率不一样 有可能导致M刚操作完P2 T又去操作P0 导致正确的P2和P0没
  • 蓝桥杯青少组python:第十三届省赛第一场

    选择题 1 下列二进制中最大数是 A 110 B 1010 C 1100 D 1001 2 以下方法 不是对文件读操作的是 A readline B readlines C readtext D read 3 以下对turtle库中函数描述
  • 蓝桥杯 辗转相除法---求最大公约数

    1 例子 例如 求 319 377 319 377 0 余319 319 377 377 319 377 319 1 余58 377 319 319 58 319 58 5 余29 319 58 58 29 58 29 2 余0 58 29
  • 洛谷-【入门4】数组

    1 小鱼比可爱 题目描述 人比人 气死人 鱼比鱼 难死鱼 小鱼最近参加了一个 比可爱 比赛 比的是每只鱼的可爱程度 参赛的鱼被从左到右排成一排 头都朝向左边 然后每只鱼会得到一个整数数值 表示这只鱼的可爱程度 很显然整数越大 表示这只鱼越可
  • 通过int 关系运算符来 比较两个 float 变量的大小

    include
  • C语言实现顺序表

    线性表是数据结构中的逻辑结构 线性表采用顺序存储的方式存储就称之为顺序表 数组是顺序表在实际编程中的具体实现方式之一 本篇主要介绍顺序表 顺序表的创建 添加元素 删除元素 遍历输出等操作 1 创建顺序表 1 1定义顺序表结构体 结构体包含三
  • 第十三届蓝桥杯省赛 JAVA A组 - 矩形拼接

    个人博客 https blog csdn net Newin2020 spm 1011 2415 3001 5343 专栏地址 蓝桥杯题解集合 专栏定位 为想参加蓝桥杯的小伙伴整理常考算法题解 祝大家都能取得理想成绩 如果有收获的话 欢迎点
  • JAVA中的JeeSite框架基本简介

    JAVA的主流框架是很多的 每一个框架都有它的适用项目和条件 所有JAVA程序员都熟悉的肯定是常用的四大框架 而JeeSite这个框架使用的人却不是很多 但是这个框架却有它的独到之处 稳定 高效 调用方便 这里对JeeSite做一个简单的介
  • c1048: [编程入门]自定义函数之字符串拷贝

    题目描述 有一字符串 包含n个字符 写一函数 将此字符串中从第m个字符开始的全部字符复制成为另一个字符串 输入 数字n 一行字符串 数字m 输出 从m开始的子串 样例输入复制 6 abcdef 3 样例输出复制 cdef 思路 两种方法 一
  • 蓝桥杯:斐波那契数列最大公约数

    题目表示的很明确 要用两个算法 斐波那契数列是很经典的dp问题 最大公约数是很经典的辗转相除法 从而我理所应当的就定义一个数组存放斐波那契数列 long long int F 2021 0 F 1 1 F 2 1 for int i 3 i
  • 三个小朋友分糖果

    题目描述 有甲 乙 丙三个小朋友 甲有x粒糖果 乙有y粒糖果 丙有z粒糖果 现在他们做一个游戏 从甲开始 将自己的糖平均分三份 自己留一份 其余两份分别给乙与丙 多余的糖果自己吃掉 然后乙与丙也依次这样做 问最后甲 乙 丙三人各有多少粒糖果
  • 蓝桥杯模拟、思维

    本文是根据博主安然无虞的文章进行我的思维训练和练习 下面是我的练习代码和思路 1 换酒问题 include
  • 2023蓝桥杯python 组试题A:2023

    题目 请求出在 12345678 至 98765432 中 有多少个数中完全不包含 2023 完全不包含 2023 是指无论将这个数的哪些数位移除都不能得到 2023 例如 20322175 33220022 都完全不包含 2023 而 2
  • 2022年第十四届蓝桥杯模拟赛【核酸日期】C语言详解

    目录 题目 思路 代码实现 题目 核酸日期 问题描述 如果周一做核酸 周二显示核酸天数为 1 天 周三显示 2 天 以此类推 周六显示 5 天 周日显示 6 天 小蓝在某一天做了一次核酸 请问他的核酸显示为几天 已知做核酸和查看核酸不是在同
  • 蓝桥杯 填字母游戏(博弈论)

    小明经常玩 LOL 游戏上瘾 一次他想挑战K大师 不料K大师说 我们先来玩个空格填字母的游戏 要是你不能赢我 就再别玩LOL了 K大师在纸上画了一行n个格子 要小明和他交替往其中填入字母 并且 1 轮到某人填的时候 只能在某个空格中填入L或
  • 【快速选择算法】O(n)时间复杂度

    快速选择的期望时间复杂度为O n 最坏时间复杂度为O n 2 当每次划分只划分为n 1个和1个时 由于划分时间复杂度为O n 最坏时间复杂度为O n 2 void quickselect vector
  • 【第十四届蓝桥杯三月真题刷题训练——第 24 天 (3.27)& 旋转 & 附近最小 & 扫地机器人 & 窗口】

    第一题 旋转 import java util Scanner public class Main static int N 300 static int a new int N N static int b new int N N pub
  • shared_ptr使用场景、陷阱、性能分析,使用建议

    1 std shared ptr使用场景 include

随机推荐

  • Jmeter多接口测试之参数传递

    接口测试包含单接口测试和多接口测试 通过组合多个接口实现一组功能的验证称为多接口测试 单接口重在单个接口多种请求组合的响应断言 多接口重在组合不同接口 实现流程的串联和验证 多接口测试涉及到接口之间参数的传递 比如AB两个接口协同完成一个功
  • DDOS高防ip是什么?有什么用?

    ddos高防ip是网络安全公司针对服务器在遭受大流量的ddos攻击导致服务不可用的情况 推出的付费增值服务 ddos攻击是通过用大量的无效流量数据对该IP的服务器进行请求 导致服务器的资源被大量占用 无法对正确的请求作出响应通过配置ddos
  • shell变量的设定规则

    内容摘自鸟哥的Linux 私房菜 1 变量与变量内容以一个等号 来连结 如下所示 myname VBird 2 等号两边不能直接接空格符 如下所示为错误 myname VBird 或 myname VBird Tsai 3 变量名称只能是英
  • Django基础之Admin后台数据管理

    Admin后台数据管理 一个站点或者网站 除了给用户浏览及操作外 还需要对后台数据进行管理 比如添加商品 修改商品等等 Django提供了一个可插拔的后台管理系统 Admin 应用 该系统可以从模型中读取元数据 并提供以模型为中心的界面 A
  • C语言文件通讯录制作说明

    文件通讯 前言 很多计算机专业大学生第一个课设就是校园出入管理系统或者文件版通讯录 这些软件工程不仅可以锻炼我们的编程能力 也可以让我们更为深刻的理解C语言知识 为将来的学习打下基础 但是同学们肯定会有所疑问 下面是我的一个范例 提示 以下
  • 高德地图 – 1.问题集锦

    1 自动加载文本框的坐标 并在地图标注点 2 点击地图时 并且 逆地理编码 解析出地址方在文本框 js var lnglatXY var marker 初始化地图对象 加载地图 var map new AMap Map mapContain
  • 【PB】动态添加数据窗口列中下拉列表的内容

    1 设置数据窗口某个列 dept id 的style type为DropDownListBox dw 1 Modify dept id ddlb case any 2 为下拉列表框添加数据 boolean lb flag false str
  • 剖析C++标准库智能指针(std::auto_ptr)

    1 Do you Smart Pointer Smart Pointer 中文名 智能指针 舶来品 不可否认 资源泄露 resource leak 曾经是C 程序的一大噩梦 垃圾回收 机制 Garbage Collection 一时颇受注目
  • 测开笔记九:线程&TestNG

    1 线程 1 1 线程概念 线程 程序执行流的最小执行单位 是行程中的实际运作单位 经常容易和进程这个概念混淆 那么 线程和进程究竟有什么区别呢 首先 进程是一个动态的过程 是一个活动的实体 简单来说 一个应用程序的运行就可以被看做是一个进
  • 机器学习——核函数

    问 已知三维空间中的两个样本点分别为 2 4 5 和 1 2 3 定义核函数表达式为 试计算这两个样本点映射到十维空间后的 答 首先计算两个样本点的平方内积 2 1 4 2 5 3 25 然后代入核函数表达式 25 5 6 131 1 核函
  • 如何修改element.style的样式

    我们通常在用组件库或者调试web样式时 发现有 element style这样的类名 这种样式其实是行内样式导致的 但是像element这种框架 没法修改行内样式
  • Cookie和Session的区别与联系

    1 前言 http的无状态和无连接 无连接 限制每次连接只处理一个请求 服务端处理完客户端的请求 并收到客户端的响应后 就断开连接 无状态 没有记录用户的登录状态 在淘宝上点击添加购物车 点击收藏 点击我的订单每一步就必须得重新登录 非常麻
  • 零相位,线性相位与非线性相位

    零相位 如图所示 如果一个信号关于第0个抽样点左右对称 则称这个信号具有零相位 线性相位 如果一个信号左右对称 但对称轴所在位置不是第0个采样点 则称这个信号具有线性相位 这就意味着 一个线性相位信号通过简单的左右平移变换便可转换为零相位信
  • unity(界面操作)如何打开模型网格

    就一个简单的操作 想不到网上的文章写的这么不清楚 找了半天才找到 误人子弟 我干脆自己写一个 如何在unity看到下面这个模型网格 如图点击
  • 【设计经验】5、Verilog对数据进行四舍五入(round)与饱和(saturation)截位

    一 软件平台与硬件平台 软件平台 操作系统 Windows 8 1 64 bit 开发套件 Vivado2015 4 2 Matlab2016a 仿真工具 Vivado自带仿真器 二 引言 在利用Verilog写数字信号处理相关算法的过程中
  • 人工智能基础学习笔记:简单神经网络的构建

    文章目录 前言 一 神经网络能够做什么 二 简单神经网络结构介绍 三 反向传播 梯度下降法 总结 前言 author Liu Zhao 作为刚入坑机器学习的一名小白 写这篇文章的初衷是想作为自己的一个学习笔记 防止知识遗忘 同时也希望能够跟
  • JAVA 简易登录界面实现 输入账号密码错误三次自动退出(超简单)

    成果图 输入账号密码错误三次自动退出 步骤 1 声明变量 提示语JLabel 文本输入框JTextField 按钮 JButton 2 设置提示语 文本框并加入JPanel中 3 添加设置按钮 并给按钮添加监听器addActionListe
  • Java学习笔记-多线程实现方式

    Java学习笔记 多线程实现方式 注意 线程开启不一定立即执行 由CPU调度执行 1 继承Thread类 自定义线程类继承Thread类 重写run 方法 编写线程执行体 创建线程对象 调用start 方法启动线程 public class
  • [leetcode 周赛 149] 1157 子数组中占绝大多数的元素

    目录 1157 Online Majority Element In Subarray 子数组中占绝大多数的元素 描述 思路 代码实现 1157 Online Majority Element In Subarray 子数组中占绝大多数的元
  • 第七届蓝桥杯大赛个人赛省赛(软件类 C语言b组)真题 (个人解题思路)

    1 煤球数目 有一堆煤球 堆成三角棱锥形 具体 第一层放1个 第二层3个 排列成三角形 第三层6个 排列成三角形 第四层10个 排列成三角形 如果一共有100层 共有多少个煤球 请填表示煤球总数目的数字 注意 你提交的应该是一个整数 不要填