蓝桥杯day14刷题日记

P8707 [蓝桥杯 2020 省 AB1] 走方格

思路:很典型的动态规划问题,对于偶数格特判,其他的正常遍历一遍,现在所处的格子的方案数等于左边的格子的方案数加上上面格子的方案数之和

cpp 复制代码
#include <iostream>
using namespace std;
int n,m;
int f[40][40];

int main()
{
	cin>>n>>m;
	f[0][1]=1;
	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=m;j++)
		{
			if(i%2==0&&j%2==0) continue;
			f[i][j]=f[i-1][j]+f[i][j-1];
		}
	}
	cout<<f[n][m];
	return 0;
}

P8627 [蓝桥杯 2015 省 A] 饮料换购

思路:先cum暂时记录本次可以保留下来的瓶盖,然后用n记录本次共有多少瓶饮料,最后更新surplus

cpp 复制代码
#include <iostream>
using namespace std;
int n,sum,surplus;
int cum;

int main()
{
	cin>>n;
	while(n)
	{
		sum+=n;
		cum=(n+surplus)%3;
		n=(n+surplus)/3;
		surplus=cum;
	}
	cout<<sum<<endl;
	return 0;
} 

P8700 [蓝桥杯 2019 国 B] 解谜游戏

思路:注意到内中外圈数量比是1:2:3,所以无论怎么旋转在内圈的一个位置都对应着中圈的两个位置以及外圈的三个位置,如下图标黑的模块,由于操作三的存在着六根塑料棒可以相互交换位置,所以只要六根塑料棒里面有三根绿色的,两根红色的,一根黄色的就符合题目的要求,因此遍历四次找出这四个集合看是否都符合上述条件,只要有一个不符合就直接输出NO

cpp 复制代码
#include <iostream>
#include <cstring>
using namespace std;
int t,flag;
string s1,s2,s3;
int q[1001];

int main()
{
	cin>>t;
	for(int i=0;i<t;i++)
	{
		cin>>s1>>s2>>s3; 
		for(int i=0;i<4;i++)
		{
			q[s3[i]]++,q[s2[i]]++,q[s2[i+4]]++,q[s1[i]]++,q[s1[i+4]]++,q[s1[i+8]]++;
			if(q['R']!=2||q['Y']!=1||q['G']!=3)
			{
				cout<<"NO"<<endl;
				flag=1;
				memset(q,0,sizeof q);
				break;
			}
			memset(q,0,sizeof q);
		}
		if(!flag) cout<<"YES"<<endl;
		flag=0;
	}
	return 0;
}
相关推荐
薰衣草233315 分钟前
一天两道力扣(1)
算法·leetcode·职场和发展
一粒沙白猫17 分钟前
Java综合练习04
java·开发语言·算法
爱coding的橙子1 小时前
每日算法刷题Day41 6.28:leetcode前缀和2道题,用时1h20min(要加快)
算法·leetcode·职场和发展
西岭千秋雪_1 小时前
Redis缓存架构实战
java·redis·笔记·学习·缓存·架构
XvnNing1 小时前
【Verilog硬件语言学习笔记4】FPGA串口通信
笔记·学习·fpga开发
一只鱼^_1 小时前
基础算法合集-图论
数据结构·算法·深度优先·图论·广度优先·宽度优先·图搜索算法
2301_803554521 小时前
c++中的绑定器
开发语言·c++·算法
海棠蚀omo1 小时前
C++笔记-位图和布隆过滤器
开发语言·c++·笔记
大胡子大叔1 小时前
webrtc-streamer视频流播放(rstp协议h264笔记)
笔记·webrtc·rtsp·webrtc-streamer