蓝桥杯刷题(一)

简介: 蓝桥杯刷题(一)

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

蓝桥杯题库

1.单词分析

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

include<stdio.h>

include<stdlib.h>

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 <stdio.h>

int main()
{
int n=0,i=0,input=0,pass=0,good=0;
scanf("%d",&n);
int arr[10001]={0};
for(i=0;i<n;i++)
{

scanf("%d",&arr[i]);//把每个成绩都用数组存起来
if(arr[i]>=60)
{
  pass++;
}
if(arr[i]>=85)
{
  good++;
}

}
printf("%.0f%%\n",(pass100)/(n1.0));//想变成百分比,再多加两个%就可以了
printf("%.0f%%\n",(good100)/(n1.0));//0.f就是小数点后保留0位,就是四舍五入到整数了

return 0;
}

3.最短路

include <stdio.h>

include <stdlib.h>

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 gN;
void add(char x,char y,int c)
{
int a=x-'A'+1;
int b=y-'A'+1;
ga=gb=c;
}
bool vis[N];
int dijkstra()
{
memset(dist,0x3f,sizeof dist);
dist[1]=0;
for(int i=0;i<n;i++)
{

int t=-1;
for(int j=1;j<=n;j++)
{
  if(!vis[j]&&(t==-1||dist[j]<dist[t]))
    t=j;
}
vis[t]=1;

for(int j=1;j<=n;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<<dijkstra();

return 0;
}

4.门牌制作

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

include <stdio.h>

include <stdlib.h>

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;k<j;k++)//将数组中每个数加起来
{

 sum+=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 <stdio.h>

include <stdlib.h>

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;

}

相关文章
|
11月前
|
Web App开发 JavaScript 前端开发
Node.js 是一种基于 Chrome V8 引擎的后端开发技术,以其高效、灵活著称。本文将介绍 Node.js 的基础概念
Node.js 是一种基于 Chrome V8 引擎的后端开发技术,以其高效、灵活著称。本文将介绍 Node.js 的基础概念,包括事件驱动、单线程模型和模块系统;探讨其安装配置、核心模块使用、实战应用如搭建 Web 服务器、文件操作及实时通信;分析项目结构与开发流程,讨论其优势与挑战,并通过案例展示 Node.js 在实际项目中的应用,旨在帮助开发者更好地掌握这一强大工具。
326 1
|
11月前
|
机器学习/深度学习 算法 Serverless
基于WOA-SVM的乳腺癌数据分类识别算法matlab仿真,对比BP神经网络和SVM
本项目利用鲸鱼优化算法(WOA)优化支持向量机(SVM)参数,针对乳腺癌早期诊断问题,通过MATLAB 2022a实现。核心代码包括参数初始化、目标函数计算、位置更新等步骤,并附有详细中文注释及操作视频。实验结果显示,WOA-SVM在提高分类精度和泛化能力方面表现出色,为乳腺癌的早期诊断提供了有效的技术支持。
|
10月前
|
人工智能 运维 Kubernetes
拥抱智算时代:阿里云容器服务智能、托管、弹性新体验
本文总结了2024云栖大会容器计算专场的演讲内容,重点介绍了阿里云容器服务的新产品体验,包括智能、托管、弹性的特点,以及如何助力客户拥抱智算时代。文中还分享了多项实际案例和技术细节,展示了阿里云容器服务在提升用户体验和解决实际问题方面的努力。
|
机器学习/深度学习 人工智能 自然语言处理
AI技术:从理论到实践——以Chatbot为例
AI技术:从理论到实践——以Chatbot为例
|
SQL 安全 Windows
SQL安装程序规则错误解析与解决方案
在安装SQL Server时,用户可能会遇到安装程序规则错误的问题,这些错误通常与系统配置、权限设置、依赖项缺失或版本不兼容等因素有关
|
数据采集 机器学习/深度学习 数据可视化
最大值归一化介绍
【10月更文挑战第2天】
793 0
|
Kubernetes 应用服务中间件 nginx
debian11使用kubeadm安装k8s
debian11使用kubeadm安装k8s
272 1
|
机器学习/深度学习 人工智能 监控
智能增强:人工智能在个性化学习中的应用
【7月更文挑战第3天】随着人工智能技术的飞速发展,教育领域正经历着一场革命。本文将探讨AI如何通过智能增强技术,实现个性化学习,从而提高教育质量和效率。我们将分析AI在识别学生需求、适应不同学习风格、提供实时反馈和调整教学内容方面的能力,并讨论这些技术对传统教育模式的影响,以及未来可能的发展方向。
304 0
VuePress 开发技术文档网站,管理.md文件,生成静态网站
VuePress 开发技术文档网站,管理.md文件,生成静态网站
327 0