蓝桥杯刷题冲刺 | 倒计时19天

作者:指针不指南吗
专栏:蓝桥杯倒计时冲刺

🐾马上就要蓝桥杯了,最后的这几天尤为重要,不可懈怠哦🐾

文章目录

  • 1.抓住那头牛
  • 2.排列序数

1.抓住那头牛

  • 题目

    链接: 抓住那头牛 - C语言网 (dotcpp.com)

    题目描述

    农夫知道一头牛的位置,想要抓住它。农夫和牛都位于数轴上,农夫起始位于点N(0≤N≤100000),牛位于点K(0≤K≤100000)。农夫有两种移动方式:

    输入格式

    两个整数,N和K。

    输出格式

    一个整数,农夫抓到牛所要花费的最小分钟数。

    样例输入

    5 17
    

    样例输出

    4
    
  • 第一次 AC 50%

    #include<bits/stdc++.h>
    using namespace std;
    
    int main()
    {
    	int n,k;
    	scanf("%d%d",&n,&k);
    	
    	if(n==k)
    	{
    		printf("0");
    		return 0;
    	}
    	
    	if(n>k)
    	{
    		printf("%d",n-k);
    		return 0;
    	}
    	
    	if(n<k)
    	{
    		printf("%d",max(1+n-k,k-n));
    		return 0; 
    	}
    	
    	return 0;
     } 
    
  • 第二次 AC 50%

    #include<bits/stdc++.h>
    using namespace std;
    
    int main()
    {
    	int n,k;
    	scanf("%d%d",&n,&k);
    	
    	if(n==k)
    	{
    		printf("0");
    		return 0;
    	}
    	
    	if(n>k)
    	{
    		printf("%d",n-k);
    		return 0;
    	}
    	
    	if(n<k)
    	{
    		int x=n,cnt=0;
    		while(x<k)
    		{
    			x*=2;
    			cnt++;
    		}
    		
    		if(cnt+k-x<0)
    		{
    			printf("%d",min(k-n,cnt+x-k));
    			return 0;
    		}
    		else
    		{
    			int c=min(k-n,cnt+x-k);
    			printf("%d",min(c,cnt+k-x));
    			return 0;
    		}
    		
    	}
    	
    	return 0;
     } 
    
  • DFS 题解

    #include<bits/stdc++.h>
    using namespace std;
    
    int n,k;
    
    //深度搜索
    int dfs(int t) //n到t的时间 
    {
    	//不能乘车 
    	if(t<=n) 
    		return n-t;
    	
        //目标地分情况:奇数和偶数
        //为什么这么分呢?
        //偶数可以直接到,直接一步一步走那里
        //奇数:分成,到t前面往后退一步,到t后面,往前走一步
    	if(t%2==1)
    	{
    		return min(dfs(t-1)+1,dfs(t+1)+1);
    	}
    	else
    	{
    		return min(dfs(t/2)+1,t-n);
    	}
    	
    }
    
    
    int main()
    {
    	
    	cin>>n>>k;
    	
    	int s=0;
    	
    	if(n==0)  //特判一下,如果n==0,2x没有用,抓牛过程中无论如何至少会往前走一步
    	{
    		n++;
    		s++;
    	}
    	
    	s+=dfs(k);
    	
    	cout<<s<<endl;
    	
    	return 0;
     } 
    
  • 我的 low BFS

    #include<bits/stdc++.h>
    using namespace std;
    
    int n,k;
    
    //bfs 可以走的点放进队列里面,走没走过的点,然后走到想要的结果
     
     int d[100010];
     
     bool st[100010]; 
     
    int bfs()
    {
    	queue<int> q;
    	q.push(n);
    	
    	memset(d,-1,sizeof d);
    	
    	while(q.size())
    	{
    		int t=q.front();
    		q.pop();
    		
    		//分情况 
    		if(t==k) return 0;
    		//扩展  三种情况
    		q.push(t+1);
    		q.push(t-1);
    		q.push(2*t);
    		d[t];
    	}
    	return d[k];
    	
    }
    
    int main()
    {
    	cin>>n>>k;
    	
    	cout<<bfs(); 
    	
    	return 0;
    }
    

别笑emmm,我也不知道我写的是个什么

  • 正确 BFS

    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #include<queue>
    using namespace std;
    const int MAXN=100001;
    struct status{
        int n,t;
        status(int n,int t)
        {
            n=n;
            t=t;
        }
    };
    bool visit[MAXN];
     
    int BFS(int n,int k){
        queue<status> myqueue;
        myqueue.push(status(n,0));//压入初始状态
        visit[n]=true; //起始点已被访问
        while(!myqueue.empty())
        {
            status current=myqueue.front();
            myqueue.pop();
            if(current.n==k)//查找成功
                return current.t;
            for(int i=0;i<3;i++)//转入不同状态 
            {
                status next(current.n,current.t+1);
                if(i==0)
                    next.n+=1;
                else if(i==1)
                    next.n-=1;
                else
                    next.n*=2;
                if(next.n<0||next.n>=MAXN||visit[next.n])
                    continue;//新状态不合法
                myqueue.push(next);//压入新的状态
                visit[next.n]=true;//该点已被访问
            } 
        }
    }
    int main()
    {
        int n,k;
        cin>>n>>k;
        memset(visit,false,sizeof(visit));//初始化;
        cout<<BFS(n,k)<<endl;
        return 0;
    }
    

    正在进一步的理解 这个BFS算法,还没有完全掌握

  • 反思

    一开始把这道题想成简单的模拟了,可以 AC 50%,还ok

    • 模拟过程中,第一次没有考虑全面

    后面又改了一次,还是不行,看题解

    真没想到,这个使用的是 dfs 和bfs ,果然做的题还是太少了

    • dfs 递归回溯
    • bfs 不断扩展 直到找到结果

2.排列序数

今天新学的知识点,跟大家分享一下,特别帅

先输入字符串 s ,然后使用 next_permutation() 输出全排列,当全排列与初始字符串相等时结束

#include<bits/stdc++.h>
using namespace std;


int main()
{
	string s="bac";
	
	sort(s.begin(),s.end());
	
	do{
		cout<<s<<endl;
	}while(next_permutation(s.begin(),s.end()));
	
	
	return 0;
}

在这里插入图片描述

s=“12345”,也是可以的

Alt

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/2009.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

网络安全之防火墙

目录 网络安全之防火墙 路由交换终归结底是联通新设备 防御对象&#xff1a; 定义&#xff1a; 防火墙的区域划分&#xff1a; 包过滤防火墙 --- 访问控制列表技术 --- 三层技术 代理防火墙 --- 中间人技术 --- 应用层 状态防火墙 --- 会话追踪技术 --- 三层、四层 UTM …

CrossOver零知识学习1 —— 初识

本文部分内容参考CrossOver22全新版功能简介 免费mac虚拟机工具_CoCo玛奇朵的博客-CSDN博客 特此致谢&#xff01; 一、CrossOver简介 CrossOver是由CODE WEAVERS公司开发的类虚拟机软件&#xff0c;目的是使Linux和Mac OS X操作系统和Window系统兼容。CrossOver英文原意为“…

强烈推荐:0基础入门网安必备《网络安全知识图谱》

蚁景网安学院一直专注于网安实战技能培养&#xff0c;提供全方位的网安安全学习解决方案。我们集聚专业网安技术大佬资源&#xff0c;倾力打造了这本更全面更系统的“网络安全知识图谱”&#xff0c;让大家在网络安全学习路上不迷茫。 在这份网安技能地图册里&#xff0c;我们对…

01 | Msyql系统架构

目录MySQL系统架构连接器查询缓存分析器优化器执行器MySQL系统架构 大体来说&#xff0c;MySQL分为Server层和引擎层两部分。 Server层包含链接器、查询缓存、分析器、优化器和执行器&#xff0c;而引擎层负责的是数据的存储和读取&#xff0c;支持InnoDB、Myisam、Memory等多…

CSS实现文字凹凸效果

使用两个div分别用来实现凹凸效果&#xff1b;text-shadow语法 text-shadow: h-shadow v-shadow blur color; h-shadow&#xff1a;必需。水平阴影的位置。允许负值。 v-shadow &#xff1a;必需。垂直阴影的位置。允许负值。 blur&#xff1a;可选&#xff0c;模糊的距离。 co…

【C语言】你真的了解结构体吗

引言✨我们知道C语言中存在着整形(int、short...)&#xff0c;字符型(char)&#xff0c;浮点型(float、double)等等内置类型&#xff0c;但是有时候&#xff0c;这些内置类型并不能解决我们的需求&#xff0c;因为我们无法用这些单一的内置类型来描述一些复杂的对象&#xff0c…

k8s部署prometheus

k8s部署prometheus 版本说明&#xff1a; k8s&#xff1a;1.24.4 prometheus&#xff1a;release-0.12&#xff08;https://github.com/prometheus-operator/kube-prometheus.git&#xff09; 本次部署采用operator的方式将prometheus部署到k8s中&#xff0c;需对k8s和prom…

springboot+vue驾校管理系统 idea科目一四预约考试,练车

加大了对从事道路运输经营活动驾驶员的培训管理力度&#xff0c;但在实际的管理过程中&#xff0c;仍然存在以下问题&#xff1a;(1)管理部门内部人员在实际管理过程中存在人情管理&#xff0c;不进行培训、考试直接进行发证。(2)从业驾驶员培训机构不能严格执行管理部门的大纲…

SpringBoot解析指定Yaml配置文件

再来个文章目录 文章目录前言1、自定义配置文件2、配置对象类3、YamlPropertiesSourceFactory下面还有投票&#xff0c;帮忙投个票&#x1f44d; 前言 最近在看某个开源项目代码并准备参与其中&#xff0c;代码过了一遍后发现多个自定义的配置文件用来装载业务配置代替数据库…

使用 Python 从点云生成 3D 网格

从点云生成 3D 网格的最快方法 已经用 Python 编写了几个实现来从点云中获取网格。它们中的大多数的问题在于它们意味着设置许多难以调整的参数&#xff0c;尤其是在不是 3D 数据处理专家的情况下。在这个简短的指南中&#xff0c;我想展示从点云生成网格的最快和最简单的过程。…

继承和派生

&#x1f436;博主主页&#xff1a;ᰔᩚ. 一怀明月ꦿ ❤️‍&#x1f525;专栏系列&#xff1a;线性代数&#xff0c;C初学者入门训练&#xff0c;题解C&#xff0c;C的使用文章&#xff0c;「初学」C &#x1f525;座右铭&#xff1a;“不要等到什么都没有了&#xff0c;才下…

手撕数据结构—队列

队列队列的话只允许在一端插入&#xff0c;在另外一端删除。插入数据的那一段叫做队尾&#xff0c;出数据的那一段叫做队头&#xff08;从尾巴插入&#xff09;。因此的话队列是先进先出的。入的顺序与出的顺序的话是一样的。这个与栈是不一样的&#xff0c;因为栈的话就是说如…

问题【Java 基础】

基础1、成员变量与局部变量的区别2、静态变量有什么作用3、字符型常量和字符串常量的区别4、静态方法为什么不能调用非静态成员5、静态方法和实例方法有何不同6、重载和重写有什么区别7、什么是可变长参数8、Java 中的几种基本数据类型了解么9、基本类型和包装类型的区别10、包…

【数据结构】树和二叉树的概念及结构

目录 1.树概念及结构 1.1 树的概念 1.2 树的相关概念 1.3树的表示 1.4 树在实际中的应用 2.二叉树概念及结构 2.1 概念 2.2 特殊的二叉树 2.2.1 满二叉树 2.2.2 完全二叉树 1.树概念及结构 1.1 树的概念 树是一种非线性的数据结构&#xff0c;它是由n(n>0) 个有…

一款专门为自动化测试打造的集成开发工具【Aqua】,“能快速构建自动化测试项目”,就问你爽不爽吧,,,

你好&#xff0c;我是不二。 随着行业内卷越来越严重&#xff0c;自动化测试已成为测试工程师的必备技能&#xff0c;谈及自动化测试肯定少不了编程&#xff0c;说到编程肯定离不开集成开发工具&#xff0c;比如&#xff1a;IntelliJ IDEA可以帮助我们快速构建Maven项目、sprin…

前端已死?后端已亡?弯弯绕绕,几分真几分假

前段时间&#xff0c;我在掘金分享了一篇GPT-4 性能文章&#xff0c;也许是过于强大带来的威胁性&#xff0c;引来评论区的排队哀嚎&#xff08;如下图&#xff09;&#xff0c;所以“前端已死&#xff0c;后端已亡”这个概念真的成立吗&#xff1f;本文着重探讨前端。 前端和后…

警惕,3月20日WOS目录更新,50本SCI/SSCI被剔除,这个出版社多达18本

2023年3月SCI、SSCI期刊目录更新 2023年3月20日&#xff0c;Web of Science核心期刊目录再次更新&#xff01;此次2023年3月SCIE & SSCI期刊目录更新&#xff0c;与上次更新&#xff08;2023年2月&#xff09;相比&#xff0c;共有50本期刊被剔除出SCIE & SSCI期刊目录…

[ 网络 ] 应用层协议 —— HTTP协议

目录 1.HTTP协议 1.1URL urlencode和urldecode 2. HTTP协议格式 HTTP请求 HTTP响应 3.告知服务器意图的HTTP方法 GET&#xff1a;获取资源 POST&#xff1a;传输实体主体 GET和POST的区别 使用Cookie的状态管理 4.返回结果的HTTP状态码 状态码告知从服务器端返回的…

三月份跳槽了,历经字节测开岗4轮面试,不出意外,被刷了...

大多数情况下&#xff0c;测试员的个人技能成长速度&#xff0c;远远大于公司规模或业务的成长速度。所以&#xff0c;跳槽成为了这个行业里最常见的一个词汇。 前几天&#xff0c;我看到有朋友留言说&#xff0c;他在面试字节的测试开发工程师的时候&#xff0c;灵魂拷问三小…

【Shell】脚本

Shell脚本脚本格式第一个Shell脚本&#xff1a;hello.sh脚本常用执行方式1. bash或sh脚本的相对路径或绝对路径2. 输入脚本的绝对路径或相对路径3. 在脚本的路径前加上.或者source脚本格式 脚本以#!/bin/bash开头&#xff08;指定解析器&#xff09; #! 是一个约定的标记&…
最新文章