倪文迪带你学蓝桥杯(2021寒假每日一题)

2021年寒假每日一题,2017~2019年的省赛真题。
本文内容由倪文迪(华东理工大学计算机系软件192班)提供。

文章目录

  • 一、2017年蓝桥杯软件类 C语言大学A组
    • 1. 迷宫
  • 附:2017年第八届蓝桥杯大赛个人赛省赛(软件类) C/C++ 大学A组考生须知

OJ:可以到http://oj.ecustacm.cn/交题,从第3页开始是历年真题:http://oj.ecustacm.cn/problemset.php?page=3

一、2017年蓝桥杯软件类 C语言大学A组

共10题,题目总览:
1、迷宫
2、跳蚱蜢
3、魔方状态
4、方格分割
5、字母组串
6、最大公共子串
7、正则问题
8、包子凑数
9、分巧克力
10、油漆面积

第一天:2021.1.3日

1. 迷宫

题目链接: http://oj.ecustacm.cn/problem.php?id=1317

(1)投机取巧的搞法
  根据本文的“附考生须知”,第1题是填空题,只交答案就行了。如果不想编码,直接用手一个个去数那100个点,几分钟就数完了,答案是31,比编码还要快。
  在OJ上这样交就能AC:

#include
using namespace std;
int main(){
     
   cout << 31 << endl;
   return 0;
}

(2)还是用这题来练练DFS编码
题解:
  一道搜索题,可以选择暴力dfs,代码简短
  我写的稍微长一点,但可以确保每个点只走到一次,稍微优化了那么一丢丢
  此题唯一的坑点是提交到OJ时,千万不要写输入!!555
  直接输出一个数字就好惹…
参考代码:(罗老师注:倪文迪没有用递归写DFS。参考这篇用递归写的DFS,更好懂:https://www.cnblogs.com/-citywall123/p/12316760.html)

#include
#include
#include
#include
#include
#include
#include
using namespace std;

int mp[20][20];
int vis[20][20];
bool tag[200];
int cnt[200];

int X[] = {
     0, 0, 0, -1, 1};
int Y[] = {
     0, -1, 1, 0, 0};

void solve(int x, int y, int id)
{
     
	while(x >= 1 && x <= 10 && y >= 1 && y <= 10 && !vis[x][y]){
     
		vis[x][y] = id;
		cnt[id]++;
		int now = mp[x][y];
		x += X[now];
		y += Y[now];
	}
	if(x < 1 || x > 10 || y < 1 || y > 10){
     
		tag[id] = true;
		return ;
	}
	if(vis[x][y]){
     
		if(tag[vis[x][y]])	tag[id] = true;	
	}
	return ;
}

int main(){
     
	for(int i = 1 ; i <= 10 ; i++){
     
		string s; cin >> s;
		for(int j = 0 ; j < 10 ; j++){
     
			if(s[j] == 'L')	mp[i][j + 1] = 1;
			else if(s[j] == 'R') mp[i][j + 1] = 2;
			else if(s[j] == 'U') mp[i][j + 1] = 3;
			else if(s[j] == 'D') mp[i][j + 1] = 4;
		}
	}
	
	int	id = 1;
	for(int i = 1 ; i <= 10 ; i++){
     
		for(int j = 1 ; j <= 10 ; j++){
     
			if(!vis[i][j]){
     
				solve(i, j, id);
				id++;
			}
		}
	}
	/*for(int i = 1 ; i <= 10 ; i++){
		for(int j = 1 ; j <= 10 ; j++){
			printf("%3.d",vis[i][j]);
		}
		cout << endl;
	}*/
	
	int res = 0;
	for(int i = 1 ; i < id ; i++){
     
		if(tag[i])	res += cnt[i];
	}
	printf("%d\n", res);
	
	return 0;
}

附:2017年第八届蓝桥杯大赛个人赛省赛(软件类) C/C++ 大学A组考生须知

考生须知
  ♦考试开始后,选手首先下载题目,并使用考场现场公布的解压密码解压试题。
  ♦考试时间为4小时。时间截止后,提交答案无效。
  ♦在考试强制结束前,选手可以主动结束考试(需要身份验证),结束考试后将无法继续提交或浏览答案。
  ♦选手可浏览自己已经提交的答案。被浏览的答案允许拷贝。
  ♦对同一题目,选手可多次提交答案,以最后一次提交的答案为准。
  ♦选手切勿在提交的代码中书写“姓名”、“考号”,“院校名”等与身份有关的信息或其它与竞赛题目无关的内容,否则成绩无效。
  ♦选手必须通过浏览器方式提交自己的答案。选手在其它位置的作答或其它方式提交的答案无效。
  ♦试题包含三种类型:“结果填空”、“代码填空”与“程序设计”。
  结果填空题:要求选手根据题目描述直接填写结果。求解方式不限。不要求源代码。
  把结果填空的答案直接通过网页提交即可,不要书写多余的内容。
  代码填空题:要求选手在弄清给定代码工作原理的基础上填写缺失的部分,使得程序逻辑正确、完整。
  把代码填空的答案(仅填空处的答案,不包括题面已存在的代码或符号)直接通过网页提交即可,不要书写多余的内容。
  使用ANSI C/ANSI C++ 标准,不要依赖操作系统或编译器提供的特殊函数。
  程序设计题目:要求选手设计的程序对于给定的输入能给出正确的输出结果。考生的程序只有能运行出正确结果才有机会得分
  注意:在评卷时使用的输入数据与试卷中给出的示例数据可能是不同的。选手的程序必须是通用的,不能只对试卷中给定的数据有效
  对于编程题目,要求选手给出的解答完全符合ANSI C++标准,不能使用诸如绘图、Win32API、中断调用、硬件操作或与操作系统相关的API。
  代码中允许使用STL类库。
  注意: main函数结束必须返回0
  注意: 所有依赖的函数必须明确地在源文件中 #include , 不能通过工程设置而省略常用头文件。
  所有源码必须在同一文件中。调试通过后,拷贝提交。
  提交时,注意选择所期望的编译器类型。

1.结果填空 (满分5分)
  问题的描述在考生文件夹下对应题号的“题目.txt”中。相关的参考文件在同一目录中。请先阅读题目,不限解决问题的方式,只要求提交结果。
  必须通过浏览器提交答案。

2.结果填空 (满分11分)
  问题的描述在考生文件夹下对应题号的“题目.txt”中。相关的参考文件在同一目录中。请先阅读题目,不限解决问题的方式,只要求提交结果。
  必须通过浏览器提交答案。

3.结果填空 (满分13分)
  问题的描述在考生文件夹下对应题号的“题目.txt”中。相关的参考文件在同一目录中。请先阅读题目,不限解决问题的方式,只要求提交结果。
  必须通过浏览器提交答案。

4.结果填空 (满分17分)
  问题的描述在考生文件夹下对应题号的“题目.txt”中。相关的参考文件在同一目录中。请先阅读题目,不限解决问题的方式,只要求提交结果。
  必须通过浏览器提交答案。

5.代码填空 (满分7分)
  问题的描述在考生文件夹下对应题号的“题目.txt”中。相关的参考文件在同一目录中。请先阅读题目,不限解决问题的方式。
  只要求填写缺失的代码部分,千万不要画蛇添足,填写多余的已有代码或符号。
  必须通过浏览器提交答案。

6.代码填空 (满分9分)
  问题的描述在考生文件夹下对应题号的“题目.txt”中。相关的参考文件在同一目录中。请先阅读题目,不限解决问题的方式。
  只要求填写缺失的代码部分,千万不要画蛇添足,填写多余的已有代码或符号。
  必须通过浏览器提交答案。

7.程序设计(满分19分)
  问题的描述在考生文件夹下对应题号的“题目.txt”中。相关的参考文件在同一目录中。请先阅读题目,必须通过编程的方式解决问题。
  注意:在评卷时使用的输入数据与试卷中给出的示例数据可能是不同的。选手的程序必须是通用的,不能只对试卷中给定的数据有效。
  仔细阅读程序的输入、输出要求,千万不要输出没有要求的、多余的内容,例如:“请您输入xx数据:”。
  建议仔细阅读示例,不要想当然!
  程序处理完一个用例的数据后,立即退出(return 0),千万不要循环等待下一个用例的输入。
  程序必须使用标准输入、标准输出,以便于机器评卷时重定向。
  对于编程题目,要求选手给出的解答完全符合ANSI C++标准,不能使用诸如绘图、Win32API、中断调用、硬件操作或与操作系统相关的API。
  代码中允许使用STL类库。
  注意: main函数结尾需要return 0
  注意: 所有依赖的函数必须明确地在源文件中 #include , 不能通过工程设置而省略常用头文件。
  所有代码放在同一个源文件中,调试通过后,拷贝提交该源码。
  提交时,注意选择所期望的编译器类型。

8.程序设计(满分21分)
  问题的描述在考生文件夹下对应题号的“题目.txt”中。相关的参考文件在同一目录中。请先阅读题目,必须通过编程的方式解决问题。
  注意事项同上题

9.程序设计(满分23分)
  问题的描述在考生文件夹下对应题号的“题目.txt”中。相关的参考文件在同一目录中。请先阅读题目,必须通过编程的方式解决问题。
  注意事项同上题

10.程序设计(满分25分)
  问题的描述在考生文件夹下对应题号的“题目.txt”中。相关的参考文件在同一目录中。请先阅读题目,必须通过编程的方式解决问题。
  注意事项同上题

你可能感兴趣的:(倪文迪带你学蓝桥杯(2021寒假每日一题))