蓝桥杯刷题(一)
创始人
2024-04-11 19:41:33
0

蓝桥杯刷题

  • 1.单词分析
  • 2.成绩统计
  • 3.最短路
  • 4.门牌制作
  • 5.数字三角(较困难)

蓝桥杯题库

1.单词分析

在这里插入图片描述在这里插入图片描述

我本人其实是比较讨厌操作字符的,因为比较麻烦,所以我将字符都用ascll码值表示。例如‘a’=97,‘b’=98,c=‘99’,所以b-a=1

#include
#include
int main()
{char input;char arr[26]={0};//一共26个字母int max=0;int i=0;while((input=getchar())!='\n')//使用getchar一个一个接收字符,我也用过scanf来接收,但scanf要么是接收字符串,要么就必须每敲一个字符敲一下回车{arr[input-'a']++;//注意arr[?]是表示这个元素,不是数组}for(i=0;i<26;i++)//26个字母依次比较{if(arr[i]>arr[max]){max=i;}}printf("%c\n%d",max+'a',arr[max]);return 0;
}

2.成绩统计

在这里插入图片描述在这里插入图片描述

这道题写代码很简单,主要考察输出部分,如何输出百分号并四舍五入

#include int main()
{int n=0,i=0,input=0,pass=0,good=0;scanf("%d",&n);int arr[10001]={0};for(i=0;iscanf("%d",&arr[i]);//把每个成绩都用数组存起来if(arr[i]>=60){pass++;}if(arr[i]>=85){good++;}}printf("%.0f%%\n",(pass*100)/(n*1.0));//想变成百分比,再多加两个%就可以了printf("%.0f%%\n",(good*100)/(n*1.0));//0.f就是小数点后保留0位,就是四舍五入到整数了return 0;
}

3.最短路

在这里插入图片描述

#include 
#include int main(int argc, char *argv[])
{printf("6");//人脑神经计算法return 0;
}

大神解法,反正我是看不懂…

#include 
#include 
using namespace std;
const int N=200,n=19;
int dist[N];
int g[N][N];
void add(char x,char y,int c)
{int a=x-'A'+1;int b=y-'A'+1;g[a][b]=g[b][a]=c;
}
bool vis[N];
int dijkstra()
{memset(dist,0x3f,sizeof dist);dist[1]=0;for(int i=0;iint t=-1;for(int j=1;j<=n;j++){if(!vis[j]&&(t==-1||dist[j]dist[j]=min(dist[j],dist[t]+g[t][j]);}}return dist[n];
}
int main()
{memset(g,0x3f,sizeof g);add('A','B',2);add('A','C',1);add('A','D',1);add('A','D',1);add('B','J',2);add('B','G',1);add('C','D',3);add('C','F',3);add('C','G',3);add('D','E',1);add('D','G',2);add('D','H',1);add('D','I',2);add('E','H',1);add('E','I',3);add('F','G',1);add('F','J',1);add('G','F',1);add('G','I',3);add('G','K',2);add('H','I',1);add('H','L',2);add('I','M',3);add('J','S',2);add('K','N',1);add('K','L',3);add('K','P',2);add('L','M',1);add('L','R',1);add('M','N',2);add('M','Q',1);add('M','S',1);add('N','P',1);add('O','P',1);add('O','Q',1);add('O','R',3);add('R','S',1);cout<

4.门牌制作

在这里插入图片描述

这道题主要考两方面,一是如何得出每个数有多少个2,二是如何将每个数的2的个数相加起来

#include 
#include int Count(int i)//计算每个数有多少个2
{if(i==0){return 0;}if(i>0){if(i%10==2)return 1+Count(i/10);if(i%10!=2)return Count(i/10);}
}
int main(int argc, char *argv[])
{int sum=0;int arr[20000]={0};int i=0;int j=0;int k=0;for(i=1;i<=2020;i++){arr[j++]=Count(i);//将每个数的2的个数存入数组}for(k=0;ksum+=arr[k];}printf("%d",sum);return 0;
}

5.数字三角(较困难)

在这里插入图片描述在这里插入图片描述在这里插入图片描述
难点

这道题的难点是要向左下走的次数与向右下走的次数相差不能超过 1。ps:这说的是全部过程,不是每一步

这里我们通过找规律可以发现如果是奇数行的话,那么它最后总会走到最后一行的中间。
如果是偶数行的话,那么会走到中间两个数的其中一个上

思路

这里我们分为三类(以第4行为例)
1.如果走到最左边(2),那么它肯定是从它的上右那个数字走来的(1)
2.如果走到最右边(4),那么它肯定是从它左上那个数走来的(0)
3.如果走到中间(7),那么它就可能是(8或0)走来的,我们取最大的那个,当然(4)我们也这样看,它的右上我们初始化是0,所以实际上是用(1和0)来比较

#include 
#include 
int MAX(int a, int b)
{return a > b ? a : b;
}
int main()
{int n = 0;scanf("%d", &n);int arr[100][100]={0};int i = 0, j = 0;for (i = 0; i < n; i++){for (j = 0; j <= i; j++){scanf("%d", &arr[i][j]);//储存数据}}for (i = 0; i < n; i++)//实际上是求出从第一行到该行数值总和{for (j = 0; j <= i; j++){if (i > 0)//从第二行开始{if (j == 0)//最右边{arr[i][j] += arr[i - 1][j];}else if (j == i)//最左边{arr[i][j] += arr[i - 1][j - 1];}else//中间{arr[i][j]+= MAX(arr[i - 1][j - 1], arr[i - 1][j]);}}}}if (n % 2 == 1)//如果是奇数行{printf("%d\n", arr[n-1][(n-1)/2]);}else//如果是偶数行{printf("%d", MAX(arr[n-1][(n-1) / 2], arr[n-1][(n-1) / 2 + 1]));}return 0;
}

相关内容

热门资讯

银河麒麟V10SP1高级服务器... 银河麒麟高级服务器操作系统简介: 银河麒麟高级服务器操作系统V10是针对企业级关键业务...
【NI Multisim 14...   目录 序言 一、工具栏 🍊1.“标准”工具栏 🍊 2.视图工具...
AWSECS:访问外部网络时出... 如果您在AWS ECS中部署了应用程序,并且该应用程序需要访问外部网络,但是无法正常访问,可能是因为...
不能访问光猫的的管理页面 光猫是现代家庭宽带网络的重要组成部分,它可以提供高速稳定的网络连接。但是,有时候我们会遇到不能访问光...
AWSElasticBeans... 在Dockerfile中手动配置nginx反向代理。例如,在Dockerfile中添加以下代码:FR...
Android|无法访问或保存... 这个问题可能是由于权限设置不正确导致的。您需要在应用程序清单文件中添加以下代码来请求适当的权限:此外...
月入8000+的steam搬砖... 大家好,我是阿阳 今天要给大家介绍的是 steam 游戏搬砖项目,目前...
​ToDesk 远程工具安装及... 目录 前言 ToDesk 优势 ToDesk 下载安装 ToDesk 功能展示 文件传输 设备链接 ...
北信源内网安全管理卸载 北信源内网安全管理是一款网络安全管理软件,主要用于保护内网安全。在日常使用过程中,卸载该软件是一种常...
AWS管理控制台菜单和权限 要在AWS管理控制台中创建菜单和权限,您可以使用AWS Identity and Access Ma...