考研机试题 -- DFS、模拟、递推、BFS

2023-11-17

全排列(DFS)

https://www.noobdream.com/DreamJudge/Issue/page/1185/

#include <iostream>
#include <algorithm>
#include <string>
using namespace std;

const int N = 10;
int visit[N], n;
char path[N];
string s;

void dfs(int u) {
	if(u == n) {
		for(int i = 0; i < n; i ++) {
			cout << path[i];
		}
		cout << endl;
		return;
	}
	
	for(int i = 0; i < n; i ++) {
		if(!visit[i]) {
			visit[i] = 1;
			path[u] = s[i];
			dfs(u + 1);
			visit[i] = 0;
		}
	}
}

int main() {
	cin >> s;
	n = s.length();
	
	dfs(0);
	return 0;
} 

八皇后(DFS)

也可以每次输入b时都执行一次dfs,但那样就慢了;

一个易错点:如果不开 path 数组,直接用 res 数组去记录答案(即19行的代码换成 res[k][u] = i)会出错,原因是回溯时可能不会回溯到 u = 1,此时 k 自增以后导致 res[k][1] 值为 0。

#include <iostream>
using namespace std;

const int N = 20;
int n, col[N], dg[N], udg[N], path[N];
int res[100][100], k = 1;

void dfs(int u) {
	if(u > 8) {
		for(int i = 1; i <= 8; i ++) {
			res[k][i] = path[i];
		}
		k ++;
		return;
	}
	for(int i = 1; i <= 8; i ++) {
		if(!col[i] && !dg[i + u] && !udg[u - i + 8]) {
			col[i] = dg[i + u] = udg[u - i + 8] = 1;
			path[u] = i; //要用path把路径保存下来,注意不能用二维数组,因为u=1时无法记录路径
			dfs(u + 1);
			col[i] = dg[i + u] = udg[u - i + 8] = 0;
		}
	}
}

int main() {
	int n, b; 
	cin >> n;
	dfs(1);
	while(n --) {
		cin >> b;
		for(int i = 1; i <= 8; i ++)
			cout << res[b][i];
		cout << endl; 
	}	
	return 0;	
}

反序输出(模拟)

https://www.noobdream.com/DreamJudge/Issue/page/1155/

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

int main() {
	string s;
	while(cin >> s) {
		int len = s.length();
		string res;
		for(int i = 0; i < len; i ++)
			res[i] = s[len - 1 - i];	
		for(int i = 0; i < len; i ++)
			cout << res[i];
		cout << endl;
	}
	return 0;
}

库函数:注意algorithm头文件

#include <iostream>
#include <string>
#include <algorithm>
using namespace std;

int main() {
	string s;
	while(cin >> s) {
		reverse(s.begin(), s.end());
		cout << s << endl;
	}
	return 0;
}

特殊乘法(模拟)

https://www.noobdream.com/DreamJudge/Issue/page/1168/

#include <iostream>
#include <string>
#include <algorithm>
using namespace std;

int main() {
	int res = 0;
	string a, b;
	cin >> a >> b;
	int len_a = a.length();
	int len_b = b.length();
	
	for(int i = 0; i < len_a; i ++) 
		for(int j = 0; j < len_b; j ++) {
			res += (a[i] - '0') * (b[j] - '0');
			
	cout << res;
	return 0;
}

众数(模拟)

https://www.noobdream.com/DreamJudge/Issue/page/1534/

#include <iostream>
using namespace std;

int s[10][10]; //s[i][j]表示从低到高第i位的j数字出现了几次

int main() {
	int n, m, k;
	cin >> n >> m;
	
	while(n --) {
		cin >> k;
		for(int i = 0; i < m; i ++) {
			s[i][k % 10] ++;
			k /= 10;
		}
	}	
	
	int res = 0, max = 0; //res记录众数,max记录最多出现的次数
	
	for(int i = 0; i < m; i ++) {
		for(int j = 0; j < 10; j ++) {
			if(s[i][j] > max) {
				max = s[i][j];
				res = j;
			}
		}
		cout << res << endl;
		res = max = 0;
	}
	return 0;
} 

吃糖果(模拟)

https://www.noobdream.com/DreamJudge/Issue/page/1197/
循环加n模n

#include <iostream>
using namespace std;

const int N = 110;
int a[N], tmp[N]; //a[i]表示第i个学生拥有的糖果数,tmp[i]表示i同学糖果数的一半 

int main() {
	int n, cnt; 
	
	while(cin >> n) {
		if(n == 0) break;
		
		for(int i = 0; i < n; i ++)
			cin >> a[i];
		
		cnt = 0; //cnt为轮次
		
		while(true) {
			//判断所有人的糖果是否一样 
			bool same = true;
			for(int i = 0; i < n; i ++) {
				if(a[i] != a[0])
					same = false; 
			}
			if(same) break;
			
			cnt ++;
			
			//每个人拿出一半糖果 
			for(int i = 0; i < n; i ++) {
				tmp[i] = a[i] / 2; 
				a[i] -= tmp[i];
			}
				
			//分糖果 
			for(int i = 0; i < n; i ++) {
				a[i] = a[i] + tmp[(i - 1 + n) % n]; //i同学拿走i-1同学的一半,加n模n是为了让0号同学能拿走n-1同学的糖果 
				if(a[i] % 2) a[i] ++; //奇数加1 
			} 
			
		} 
		cout << cnt << " " << a[0] << endl;
	}
	return 0;
}

递推数列(递推)

https://www.noobdream.com/DreamJudge/Issue/page/1171/
(a + b) mod p = (a mod p + b mod p) mod p,适用于加减乘法,除法不适用。

#include <iostream>
using namespace std;

const int N = 10e6;
int s[N];

int main() {
	int a, b, p, q, k, res;
	cin >> a >> b >> p >> q >> k;
	
	s[0] = a;
	s[1] = b;
	
	for(int i = 2; i <= k; i ++)
		s[i] = (p * s[i - 1]) % 10000 + (q * s[i - 2]) % 10000 ;
	
	cout << s[k] % 10000 ;
	return 0;
} 

玛雅人的密码(BFS)

https://www.noobdream.com/DreamJudge/Issue/page/1162/

#include <iostream>
#include <string>
#include <cstring>
#include <queue>
#include <unordered_map>
using namespace std;

int n;
string s;

int bfs() {
	queue<string> q;
	unordered_map<string, int> dist;
	dist[s] = 0; 
	q.push(s);
	
	while(!q.empty()) {
		string t = q.front();
		q.pop();
		
		for(int i = 0; i < n; i ++) {
			if(t.substr(i, 4) == "2012")
				return dist[t];
		}
		
		for(int i = 1; i < n; i ++) {
			string r = t;			
			swap(r[i], r[i - 1]);
			if(!dist.count(r)) {
				dist[r] = dist[t] + 1;
				q.push(r);
			}
			
		}
	}
	
	return -1;
}

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

考研机试题 -- DFS、模拟、递推、BFS 的相关文章

  • Mac brew安装mysql之后无法启动mysql

    使用Mac brew装完mysql之后 连接mysql报错 songdeMacBook Pro mysql song mysql uroot p Enter password ERROR 2002 HY000 Can t connect t
  • Linux之硬链接和软链接

    硬链接 1 包含在目录中的一个文件名就是一个文件的硬链接 或简称链接 Link 在同一目录或者不同目录中 同一个文件可以有好几个链接 对应好几个文件名 创建链接的命令 ln P1 P2 用来创建一个新的硬链接 即为由路径P1标识的文件创建一
  • 推荐几个UI/UX设计师常用软件和网站

    网站 Dribbble dribbble com Dribble是一个面向创作家 艺术工作者 设计师等创意类作品的人群 提供作品在线服务 供网友在线查看已经完成的作品或者正在创作的作品的交流网站 Dribbble还针对手机推出了相应的软件

随机推荐

  • Nginx介绍

    Nginx介绍 是什么 Nginx是一款轻量级的Web 服务器 反向代理服务器及电子邮件 IMAP POP3 代理服务器 在BSD like 协议下发行 其特点是占有内存少 并发能力强 事实 上nginx的并发能力在同类型的网页服务器中表现
  • Win11怎么设置任务栏大小?Win11调整任务栏

    有用户在使用Win11系统的过程中发现任务栏大小不一样 非常影响美观 有什么办法可以设置Win11任务栏的大小吗 下面小编就给大家带来Win11调整任务栏大小的教程 希望对大家有帮助 Win11 4月最新版下载 Ghost Win11 22
  • Spring学习总结

    Spring学习总结 文章目录 Spring学习总结 toc 一 Spring介绍 1 概念 2 下载路径 二 IOC容器 1 IOC概念和原理 什么是IOC IOC底层原理 2 IOC接口 3 IOC操作 Bean管理 什么是Bean管理
  • 零基础入门金融风控-贷款违约预测-机器学习-数据分析

    零基础入门金融风控 贷款违约预测 一 赛题数据 赛题以预测用户贷款是否违约为任务 数据集报名后可见并可下载 该数据来自某信贷平台的贷款记录 总数据量超过120w 包含47列变量信息 其中15列为匿名变量 为了保证比赛的公平性 将会从中抽取8
  • 计算机网络实验|DNS 域名服务协议

    DNS 域名服务协议 实验目的 1 理解 DNS 实现的原理 2 了解 DNS 解析的过程 3 掌握 DNS 报文格式 实验环境 本实验要求实验室主机能够连接到 Internet 并可浏览网页 实验拓扑如图 实验内容 1 学习 DNS 协议
  • 《Effective Modern C++》第3章学习记录

    Moving to Modern C C 11 and C 14 big name features auto smart pointers move semantics lambdas concurrency braces vs pare
  • 使用canal同步数据,踩坑排雷全过程

    1 mysql配置 1 检查binlog功能是否有开启 mysql gt show variables like log bin Variable name Value log bin OFF 1 row in set 0 00 sec 如
  • HBase常用命令(超全超详细)

    目录 连接HBase 连接HBase并查看版本 帮助命令 查看服务器状态 查看当前数据库中有哪些表 命名空间 列出所有命名空间 新建命名空间 删除命名空间 修改命名空间 创建表 列举表 表结构 查询表 添加数据 更新数据 检查插入情况 表扫
  • MySQL中的sleep函数介绍

    微信公众号 互联网全栈架构 MySQL数据库中有一个不太常用但便于进行某些调试的函数 sleep 今天我们就来介绍一下这个函数的用法 首先 看看官网对于函数的定义 SLEEP duration Sleeps pauses for the n
  • 70道面试常见算法题

    字符串的循环移位 三次翻转 字符串的包含 哈希表 字符串全排列 next permutation算法 字符串的所有组合 dfs 字符串转整数 stoi stol 注意边界 回文判断 判断字符串是否为回文串 双指针从两头往中间扫描 判断链表是
  • linux系统下怎么安装.deb文件?

    linux系统下怎么安装 deb文件 deb 是 ubuntu debian 的格式 rpm 是 redhat fedora suse 的格式 他们不通用 虽然可以转换一下 deb是debian发行版的软件包 ubuntu是基于debian
  • pycharm常用快捷键总结

    工欲善其事 必先利其器 Python开发利器Pycharm常用快捷键以及配置如下 相信有了这些快捷键 你的开发会事半功倍 一 常用快捷键 编辑类 Ctrl D 复制选定的区域或行 Ctrl Y 删除选定的行 Ctrl Alt L 代码格式化
  • Three.js创建文字(Creating text)

    1 DOM CSS 使用HTML通常是最简单 最快速的添加文本的方法 这是大多数的Three js示例中用于添加描述性叠加文字的方法 div Description div 然后使用CSS来将其绝对定位在其它具有z index的元素之上 尤
  • 你的公司建立了企业文化了么?没有就看看这个

    一个地方运营商的经营语录 文 毛启盈 国庆期间 笔者出差河南 有一个意外的发现 这就是我要特别给大家介绍的河南联通的经营语录 是一本广泛流传于河南运营商中的 语录体 小册子 名曰 王祖益总 经理关于河南联通企业文化论述摘要 培训教材 内部资
  • Linux MISC 驱动实验

    我们板子上的某些外设无法进行分类的时候就可以使用 MISC 驱动 MISC 驱动其实就是最简单的字符设备驱动 通常嵌套在 platform 总线驱动中 实现复杂的驱动 一 MISC 设备驱动简介 所有的 MISC 设备驱动的主设备号都为 1
  • [数据分析与可视化] Python绘制数据地图4-MovingPandas入门指北

    MovingPandas是一个基于Python和GeoPandas的开源地理时空数据处理库 用于处理移动物体的轨迹数据 它提供了一组强大的工具 可以轻松地加载 分析和可视化移动物体的轨迹 通过使用MovingPandas 用户可以轻松地处理
  • Window安全策略的制定与实施

    一 安全策略一 给系统打补丁 1 加强windows用户账户认证和访问控制权限控制 通过经常给电脑打补丁来保护电脑数据 这是一个保护电脑 防护很多病毒的有效措施 因为大多数电脑病毒都是通过WINDOWS操作系统的漏洞进行攻击 破坏电脑的正常
  • Django图书商城系统实战开发-实现商品分类管理

    Django图书商城系统实战开发 实现商品分类管理 目前项目已经实现了登录注册 商品详情查看 购物车购买 个人订单管理 评价功能 个人中心管理 管理员登录 会员管理 请设计商品分类管理的相关页面以及视图函数 首先你要知道 商品分类有一级分类
  • (深度学习,机器学习)卷积神经网络

    1 卷积神经网络使深度学习卷土重来是因为卷积神经网络非常适合计算机视觉应用的模型 2 卷积神经网络基本原理包括 卷积算子 卷积的特征 卷积神经网络的典型结构 以及其中的卷积层和池化层 3 卷积提供了能够提升机器学习效果的的三种重要方法 系数
  • 考研机试题 -- DFS、模拟、递推、BFS

    目录 全排列 DFS 八皇后 DFS 反序输出 模拟 特殊乘法 模拟 众数 模拟 吃糖果 模拟 递推数列 递推 玛雅人的密码 BFS 全排列 DFS https www noobdream com DreamJudge Issue page