USACO Section1.1 Broken Necklace
来源:互联网 发布:淘宝助理打出尺寸不对 编辑:程序博客网 时间:2024/06/05 08:17
题目:
你有一条由N个红色的,白色的,或蓝色的珠子组成的项链(3<=N<=350),珠子是随意安排的。 这里是 n=29 的二个例子:
1 2 1 2 r b b r b r r b r b b b r r b r r r w r b r w w b b r r b b b b b b r b r r b r b r r r b r r r r r r b r b r r r w 图片 A 图片 B r 代表 红色的珠子 b 代表 蓝色的珠子 w 代表 白色的珠子
第一和第二个珠子在图片中已经被作记号。
图片 A 中的项链可以用下面的字符串表示:
brbrrrbbbrrrrrbrrbbrbbbbrrrrb
假如你要在一些点打破项链,展开成一条直线,然后从一端开始收集同颜色的珠子直到你遇到一个不同的颜色珠子,在另一端做同样的事(颜色可能与在这之前收集的不同)。 确定应该在哪里打破项链来收集到最大数目的珠子。
例如,在图片 A 中的项链中,在珠子 9 和珠子 10 或珠子 24 和珠子 25 之间打断项链可以收集到8个珠子。
白色珠子什么意思?
在一些项链中还包括白色的珠子(如图片B) 所示。
当收集珠子的时候,一个被遇到的白色珠子可以被当做红色也可以被当做蓝色。
表现含有白珠项链的字符串将会包括三个符号 r , b 和 w 。
写一个程序来确定从一条被给出的项链可以收集到的珠子最大数目。
格式:
输入:
第 1 行: N, 珠子的数目
第 2 行: 一串长度为N的字符串, 每个字符是 r , b 或 w。
输出:
单独的一行 最大可能取得的珠子数。
示例:
输入:
29
wwwbbrwrbrbrrbrbrwrwwrbwrwrrb
输出:
11
题解:
定义一个字符数组来存储项链,并且将其复制串连在尾部,这样当从下标i剪断项链时,顺时针的遍历就是从i+1向n+i遍历,用t存储颜色相同的数量,逆时针的遍历就是从n+i向i+1遍历,用k存储颜色相同的数量。如果项链的颜色全部一样那么 t+k就会大于总数n,所以需加上一步判断,当t+k>n时,t+k=n。
代码:
/* ID: a4556762PROG: beads LANG: C++*/#include<cstdio>#include<iostream>#include<string> #include<cstring>#include<cstdlib>using namespace std;int ss(char a[],int b,int n){ int i,t=0,k=0; char x=a[b],y=a[n+b-1]; for(i=b;i<n+b;i++) { if(x=='w') { x=a[i+1]; t++; continue; } if(x==a[i]||a[i]=='w') t++; else break; } for(i=n+b-1;i>=b;i--) { if(y=='w') { y=a[i-1]; k++; continue; } if(y==a[i]||a[i]=='w') k++; else break; } if(t+k>=n) return n; return t+k;}int main(){ freopen("beads.in","r",stdin); freopen("beads.out","w",stdout); int n,i,max=0,b=0,t; char a[10000]; cin>>n>>a; for(i=0;i<n;i++) { a[n+i]=a[i]; } for(i=0;i<n;i++) { t=ss(a,i,n); if(max<t) max=t; } cout<<max<<endl; return 0;}
- USACO--Section1.1--Broken Necklace
- USACO-Section1.1 Broken Necklace
- USACO-Section1.1 Broken Necklace
- USACO-Section1.1 Broken Necklace
- USACO-Section1.1 Broken Necklace[...]
- USACO Section1.1 Broken Necklace
- USACO-Section1.1 Broken Necklace [动态规划]
- USACO-Section1.1 Broken Necklace【记忆化搜索】
- USACO之Section1.1.4 Broken Necklace
- USCAO-Section1.1 Broken Necklace(DP版)
- usaco 1-1-4 Broken Necklace
- Broken Necklace(USACO)
- Broken Necklace(USACO官方)
- usaco--Broken Necklace
- USACO 1.1-Broken Necklace
- usaco 1.1:Broken Necklace
- [USACO] Broken Necklace
- usaco Broken Necklace字符串
- 线程中断
- C++冒泡排序(初级版)
- 《罪与罚》读后感
- vmware中的RHEL scsi_id不显示虚拟磁盘的wwid的问题
- [leetcode]187. Repeated DNA Sequences
- USACO Section1.1 Broken Necklace
- 二层交换机的基本原理
- 米斯特web安全培训第一期课程目录
- 算法导论程序32--红黑树的删除
- CSDN论坛积分等级制度
- ZigBee_Zstack协议栈简介
- 使用阿里云的ECS实例创建LAMP环境下的wordpress个人博客网站
- 计组中关于字节,字长,存储器的知识
- Html form 表单提交前验证