收藏 分享(赏)

蓝桥杯-作业2-版本1.doc

上传人:精品资料 文档编号:11000389 上传时间:2020-01-30 格式:DOC 页数:15 大小:78.61KB
下载 相关 举报
蓝桥杯-作业2-版本1.doc_第1页
第1页 / 共15页
蓝桥杯-作业2-版本1.doc_第2页
第2页 / 共15页
蓝桥杯-作业2-版本1.doc_第3页
第3页 / 共15页
蓝桥杯-作业2-版本1.doc_第4页
第4页 / 共15页
蓝桥杯-作业2-版本1.doc_第5页
第5页 / 共15页
点击查看更多>>
资源描述

1、1、串。密码脱落X 星球的考古学家发现了一批古代留下来的密码。这些密码是由 A、B 、C、D 四种植物的种子串成的序列。仔细分析发现,这些密码串当初应该是前后对称的(也就是我们说的镜像串) 。 ABA ABBA A 由于年代久远,其中许多种子脱落了,因而可能会失去镜像的特征。你的任务是:给定一个现在看到的密码串,计算一下从当初的状态,它要至少脱落多少个种子,才可能会变成现在的样子。输入一行,表示现在看到的密码串(长度不大于 1000)要求输出一个正整数,表示至少脱落了多少个种子。例如,输入:ABCBA则程序应该输出:0再例如,输入:ABDCDCBABC则程序应该输出:3-思路AC*AC*代码实

2、现:#include using namespace std;#include#includeint sinx=1000;void f(string a,int x,int y,int num)/num 缺少的个数,if(x=y)if(sinxnum) sinx=num;/结束比较大小return;if(ax!=ay)/不对称f(a,x+1,y,num+1);/后面缺少f(a,x,y-1,num+1);/前面缺少else f(a,x+1,y-1,num);/对称继续比较int main()string a;cina;int along=a.size();f(a,0,along-1,0);cou

3、tusing namespace std;#include#includeint f(int n);int g(int n)if(n=0) return 0;else if(n=1) return 1;else if(n=2) return 1;else return f(n-1)+f(n-2);int f(int n)if(n=0) return 1;else if(n=1) return 0;else if(n=2) return 1;else return g(n-1)+g(n-2);int main()coutusing namespace std;#include#includein

4、t sum;bool p(int a10)if(a0a1|a0a2|a1a3|a1a4|a2a4|a2a5) return false;if(a3a6|a3a7|a4a7|a4a8|a5a8|a5a9) return false;return true;void f(int a10,int k,int n)if(n=k)if(p(a) sum+;elsefor(int i=k;i yif(f(y)=输) return 赢if(f(y)=平局)逼平 = true;if(逼平) return 平局return 输代码设计:#include using namespace std;#include

5、int num3;int f(int n,int fnum,int gnum,int z)if(n=numi)if(f(n-numi,fnum+numi,gnum,(z+1)%2)=-1) return 1;if(f(n-numi,fnum+numi,gnum,(z+1)%2)=0) bp = true;if(z%2=1)for(int i=0;i=numi)if(f(n-numi,fnum,gnum+numi,(z+1)%2)=-1) return 1;if(f(n-numi,fnum,gnum+numi,(z+1)%2)=0) bp = true;if(bp) return 0;retur

6、n -1;int main()int a5;cinnum0num1num2;sort(num,num+3);for(int i=0;iai;for(int i=0;iusing namespace std;#include#includeint b4=1,3,7,8;int f(int n)for(int i=0;ibi)if(f(n-bi)=0) return 1;/对方输自己赢return 0;/当 N=1 时没有选择int main()int n;cinn;int a100;for(int i=0;iai;for(int i=0;i#include using namespace std

7、;int types2,map34;/map 数组值对应意义:0 表示留空,1 表示垂直,-1 表示水平/合法性验证bool validate(int i,int j,int type)if(type=1)/测试垂直方向/向上边验证for(int k=i-1;k=0;k-)if(mapkj=-type) break;else if(mapkj=type)return false;/向下边验证for(int k=i+1;k=0;k-)if(mapik=-type) break;else if(mapik=type) return false;/向右边验证for(int k=j+1;kn;whil

8、e(n-)types0=1; types1=-1;for(int i=0;inumsj;if(numsj=-)mapij=-1;else if(numsj=1)mapij=1;process();cout, 不能通过工程设置而省略常用头文件。提交时,注意选择所期望的编译器类型(千万不要混淆 c 和 cpp)。解题锦囊:所有这类的博弈问题都可以归结为尼姆游戏。这里考虑:如何把本问题转化为尼姆游戏问题。两两连续分在一组:若偶数(a1 a2) (b1 b2)若奇数(a1 a2) (b1 b2) (x |)考虑每个组的间隔,可以转化为尼姆问题。测试用例我发到群里。代码实现:#include#inclu

9、de#include#define N 100using namespace std;int a1010;int main()int k;char c;int t=0;while (1)scanf(“%d%c“,a+t=k;if (c=n) break;k=0;int ans=0;while (2*k+2=t)ans=(a2*k+2-a2*k+1-1);k+;if (ans=0) cout“-1“endl;elsefor (int i=1;it;i+)for (int j=ai+1;jai+1;j+)k=ai;ai=j;int ans=0;for (int l=2;l=t;l+=2)ans=(al-al-1-1);if (ans=0)coutk“ “jendl;break;ai=k;return 0;运行结果:

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报