蓝桥杯-算法提高-Cowboys
算法训练 Cowboys
时间限制:2.0s 内存限制:256.0MB
#include <iostream>
#include<string.h>
#include<cstdio>
using namespace std;
#define N 105
int dp[N][2];
string s;
int main()
{cin>>s;bool flag = 0;int len = s.length();for(int i=1;i<len;i++){if(s[i]!=s[0]){flag = 1;break;}}if(!flag){ //如果都为 ‘A’或 ‘B’cout<<1; return 0;}int cot;for(int i=0;i<len;i++){ //找到 ‘BA’if(s[ (i+1) %len] == s[i] - 1){cot = i; break;}}int st = (cot + 2) % len;int ed = (cot - 1 + len) % len;dp[st][0] = 1;dp[st][1] = 0;while(st != ed){st = (st+1) % len;if(s[st]==s[(st-1+len) %len]){dp[st][0] = dp[ (st-1+len) %len][0] + dp[(st-1+len) %len][1];dp[st][1] = 0;}else if(s[st] == s[(st-1+len) %len] + 1){dp[st][0] = dp[(st-1+len) %len][1];dp[st][1] = 0;}else{dp[st][0] = dp[(st-1+len) %len][0] + dp[(st-1+len) %len][1];dp[st][1] = dp[(st-2+len) %len][0] + dp[(st-2+len) %len][1];if(dp[st][1] == 0) dp[st][1] = 1;}}int sum = dp[st][0] + dp[st][1];if(s[(cot + 2) % len]=='B' && s[(cot + 3) % len]=='B'){cout<<sum; return 0; //如果是 BABB}if(s[(cot - 1 + len) % len]=='A' && s[(cot -2 + len) % len]=='A'){cout<<sum; return 0; // 如果是 AABA}int length = 2;st = (cot + 2) % len;ed = (cot - 1 + len) % len;if(s[(cot + 2) % len]=='B' && s[(cot + 3) % len]=='A'){st = (st + 2) % len;length +=2;}if(s[(cot - 1 + len) % len]=='A' && s[(cot -2 + len) % len]=='B'){ed =(ed - 2 + len) % len;length+=2;}if(length>=len){ //如果 是 BABA 或者 BABABAcout<<sum+1; return 0;}memset(dp,0,sizeof(dp)); //注意清空dp[st][0] = 1;dp[st][1] = 0;while(st != ed){st = (st+1) % len;if(s[st]==s[(st-1+len) %len]){dp[st][0] = dp[ (st-1+len) %len][0] + dp[(st-1+len) %len][1];dp[st][1] = 0;}else if(s[st] == s[(st-1+len) %len] + 1){dp[st][0] = dp[(st-1+len) %len][1];dp[st][1] = 0;}else{dp[st][0] = dp[(st-1+len) %len][0] + dp[(st-1+len) %len][1];dp[st][1] = dp[(st-2+len) %len][0] + dp[(st-2+len) %len][1];if(dp[st][1] == 0) dp[st][1] = 1;}}sum += dp[st][0] + dp[st][1];cout<<sum;return 0;
}
蓝桥杯-算法提高-Cowboys相关推荐
- [蓝桥杯][算法提高VIP]夺宝奇兵-递推+记忆化搜索
题目描述 在一座山上,有很多很多珠宝,它们散落在山底通往山顶的每条道路上,不同道路上的珠宝的数目也各不相同.下图为一张藏宝地图: 7 3 8 8 1 0 2 7 4 4 4 5 2 6 5 " ...
- [蓝桥杯][算法提高VIP]夺宝奇兵-dp
题目描述 在一座山上,有很多很多珠宝,它们散落在山底通往山顶的每条道路上,不同道路上的珠宝的数目也各不相同.下图为一张藏宝地图: 7 3 8 8 1 0 2 7 4 4 4 5 2 6 5 " ...
- JAVA 蓝桥杯 算法提高 阮小二买彩票
JAVA 蓝桥杯 算法提高 阮小二买彩票 资源限制 时间限制:1.0s 内存限制:512.0MB 问题描述 在同学们的帮助下,阮小二是变的越来越懒了,连算账都不愿意自己亲自动手了,每天的工作就是坐在电 ...
- [蓝桥杯][算法提高VIP]阮小二买彩票
[蓝桥杯][算法提高VIP]阮小二买彩票 题目描述 在同学们的帮助下,阮小二是变的越来越懒了, 连算账都不愿意自己亲自动手了,每天的工作就是坐在电脑前看自己的银行账户的钱是否有变多.可是一段时间观察下 ...
- 【蓝桥杯算法提高VIP-开灯游戏(两种超易理懂解法:暴力/位操作(切换位))(纯正C语言代码)】
蓝桥杯算法提高VIP-开灯游戏 题目描述 有9盏灯与9个开关,编号都是1~9. 每个开关能控制若干盏灯,按下一次会改变其控制的灯的状态(亮的变成不亮,不亮变成亮的). 具体如下: 第一个开关控制第二, ...
- [蓝桥杯][算法提高] 填充蛋糕
[蓝桥杯][算法提高] 填充蛋糕 编程计算涂满高为2,半径为r的圆形蛋糕表面,需要多少表面积的奶油(只要涂上表面和侧面) 读入一个数r,输出需要奶油的表面积,结果保留一位小数 样例输入 5.0 样例输 ...
- c语言oj题1923偶数之和,问题 1923: [蓝桥杯][算法提高VIP]学霸的迷宫 (BFS)
题目描述 学霸抢走了大家的作业,班长为了帮同学们找回作业,决定去找学霸决斗.但学霸为了不要别人打扰,住在一个城堡里,城堡外面是一个二维的格子迷宫,要进城堡必须得先通过迷宫.因为班长还有妹子要陪,磨刀不 ...
- JAVA 蓝桥杯 算法提高 色盲的民主
JAVA 蓝桥杯 算法提高 色盲的民主 资源限制 时间限制:1.0s 内存限制:256.0MB 色盲的民主 问题描述 n个色盲聚在一起,讨论一块布的颜色.尽管都是色盲,却盲得各不相同.每个人都有自 ...
- [蓝桥杯][算法提高VIP]阮小二买彩票[递归全排列]
题目 1578: [蓝桥杯][算法提高VIP]阮小二买彩票 时间限制: 1Sec 内存限制: 128MB 提交: 348 解决: 153 题目描述 在同学们的帮助下,阮小二是变的越来越懒了, 连算账都 ...
最新文章
- python编程难吗-Python、C+这些编程语言难吗?十岁女孩告诉你答案
- qt如何捕获应用程序输出_企业应用程序中需要捕获的5大Java性能指标
- python实时数据存储与显示_利用python进行数据加载和存储
- 机器学习笔记——支持向量机
- 【leetcode】1053. Previous Permutation With One Swap
- mysql注释符号_MySQL基础知识(2021最新版教程)
- Maven配置文件无法被导出或者生效的问题【已解决】
- 举世闻名的 SQL 注入是什么?这个漫画告诉你!
- 美团 Flink 大作业部署与状态稳定性优化实践
- linux内核源码下载地址
- jieba 使用笔记
- 第一章 复数与复变函数
- Qt各版本官方下载地址
- 地震后的重建!——AD灾难恢复!
- 如何对极乐迪斯科(Disco Elysium for mac)进行安装
- Torch中的benchmarkdeterministic是什么含义?
- spring中c3p0配置 ---这是一位仁兄的经历
- Java面试题总结-2022版
- UGUI源码分析:GridLayoutGroup网格布局组件与ContentSizeFitter尺寸调节组件
- idea重启端口占用问题
热门文章
- Remove Element
- ARM态度暧昧,愤怒的华为或投入Risc-V怀抱
- 关于显示器显示输入信号超出范围,请调整为1600x900@60hz解决办法
- 23 20210525+0529直播 企业微信接口测试实战1+2
- 中国芯片设计云技术白皮书2.0发布
- php x509certificate,ssl - .NET中的X509Certificate2和X509Certificate有什么区别?
- 传感器检测技术——传感器的静态特性
- 传统支付方式不能满足线下支付的需求
- 《Java Web开发实战》Java工程师推荐的进阶之路
- Android 之 Project Butter 详细介绍