蓝桥杯(填空题)

十四届

B组 日期统计(暴力枚举)

数据

cpp 复制代码
5 6 8 6 9 1 6 1 2 4 9 1 9 8 2 3 6 4 7 7 5 9 5 0 3 8 7 5 8 1 5 8 6 1 8 3 0 3 7 9 2
7 0 5 8 8 5 7 0 9 9 1 9 4 4 6 8 6 3 3 8 5 1 6 3 4 6 7 0 7 8 2 7 6 8 9 5 6 5 6 1 4 0 1
0 0 9 4 8 0 9 1 2 8 5 0 2 5 3 3

审清题意:人家问的是这些数当中的子序列 有没有符合 2023mmdd 的 不是找能够多少个

答案:235

cpp 复制代码
#include<iostream>
#include<cstring>
#include<map>
#include<set>
using namespace std;
int month[13]={0,1,2,3,4,5,6,7,8,9,10,11,12};
int day[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
int a[110];
int main()
{
    for(int i=1;i<=100;i++) cin>>a[i];
	int sum=0;
	for(int i=1;i<=12;i++)
	{
		for(int j=1;j<=day[i];j++)
		{
			int b[8]={2,0,2,3,i/10,i%10,j/10,j%10};
		    int l=0;
		    for(int i=1;i<=100;i++)
		    {
		    	if(b[l]==a[i])
		    	{
		    		l++;
				}
				if(l==8) break;
			}
			if(l==8) sum++;
		}
	}
	cout<<sum<<endl;
	return 0;
}

第十三届

A组 灭鼠先锋(博弈)

答案:LLLV

cpp 复制代码
#include<iostream>
#include<cstring>
#include<queue>
#include<map>
using namespace std;
map<string,bool>sg;
// 判断是否仅存在一个空格(O)
// 扫描字符串并对O的数量计数
bool check(string str)
{
	int cnt=0;
	for(int i=0;i<str.size();i++)
	{
		if(str[i]=='O') cnt++;
	}
  if(cnt==1) return true;
  return false;
}
/*
* 后手必胜/必败
*/
bool dfs(string str)
{
	if(sg.count(str)) return  sg[str];// 记忆化
	// 如果只有一个空位,也就是说后手必败
	if(check(str)) return sg[str]=false;
	/*
	* 模拟放一个的情况
	*/
	for(int i=0;i<str.size();i++)
	{
		if(str[i]=='O')
		{
			string s=str;
			s[i]='X';
			// 可达必败均为必胜
			// 意思是存在当前选手下了某一步棋之后,后面的选手不管怎么下都必败
			if(!dfs(s)) return sg[str]=true;
		}
	}/*
	* 模拟放两个的情况
	*/
	for(int i=0;i<str.size()-1;i++)
	{	// i!=3是什么意思?因为这里是把两行排成一行了,不能第一行最后一个+第二行第一个算作连续两个
		if(str[i]=='O'&&str[i+1]=='O'&&i!=3)
		{
			string s=str;
			s[i]='X';
			s[i+1]='X';
			// 可达必败均为必胜
			if(!dfs(s)) return  sg[str]=true;
		}
	}
	
	// 只达必胜均为必败
	// 排除了所有可能到达必败态的情况,接下来不管自己或者下一步对方怎么下对方都必胜,自己必败
	return sg[str]=false;
}
int main()
{
	// 表示棋盘的四种状态
   string str[4]={"XOOOOOOO","XXOOOOOO","OXOOOOOO","OXXOOOOO"};
   for(int i=0;i<4;i++)
   {
   	 sg.clear();
     if(dfs(str[i])) cout<<"L";// 后手必胜
	 else cout<<"V";  	
   }
	return 0;
}

研究生组 小蓝与药匙(错排)

思路:从28把钥匙中选14(14钥匙一 一对应对应对的门) 然后让剩下的14把钥匙错排

错排公式

An=(n-1)*(An-1+An-2)

cpp 复制代码
#include<iostream>
#include<algorithm>
#define int long long
using namespace std;
const int N=30;
int f[N];
signed main()
{
	int num=1,num1=1;
	for(int i=15;i<=28;i++) num*=i;
	for(int i=1;i<=14;i++) num1*=i;
	num/=num1;
	f[1]=0;
	f[2]=1;
	for(int i=3;i<=14;i++)
	{
		f[i]=(i-1)*(f[i-1]+f[i-2]);
	}
	cout<<f[14]*num<<endl;
	return 0;
}
相关推荐
ths5122 小时前
测试开发python中正则表达式使用总结(二)
开发语言·python·算法
不爱吃炸鸡柳2 小时前
5道经典贪心算法题详解:从入门到进阶
开发语言·数据结构·c++·算法·贪心算法
枫叶林FYL2 小时前
【自然语言处理 NLP】8.3 长文本推理评估与针在大海堆任务
人工智能·算法
智者知已应修善业2 小时前
【51单片机1,左边4个LED灯先闪烁2次后,右边4个LED灯再闪烁2次:2,接着所用灯一起闪烁3次,接着重复步骤1,如此循环。】2023-5-19
c++·经验分享·笔记·算法·51单片机
xiaoye-duck2 小时前
《算法题讲解指南:优选算法-队列+宽搜》--70.N叉树的层序遍历,71.二叉树的锯齿形层序遍历,72.二叉树的最大宽度,73.在每个树行中找最大值
数据结构·c++·算法·队列
汀、人工智能2 小时前
[特殊字符] 第98课:数据流中位数
数据结构·算法·数据库架构··数据流·数据流中位数
Eloudy2 小时前
不同特征值的特征向量互相正交的矩阵
人工智能·算法·机器学习
人道领域2 小时前
【LeetCode刷题日记】:从 LeetCode 经典题看哈希表的场景化应用---数组、HashSet、HashMap 选型与算法实战
算法·leetcode·面试
努力努力再努力wz2 小时前
【C++高阶系列】告别内查找局限:基于磁盘 I/O 视角的 B 树深度剖析与 C++ 泛型实现!(附B树实现源码)
java·linux·开发语言·数据结构·c++·b树·算法