BIT2014级软件学院程序设计-12 编程珠玑
来源:互联网 发布:数据脱敏与数据匿名 编辑:程序博客网 时间:2024/05/16 10:14
你有一条项链,它由 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 Figure A Figure B r red bead b blue bead w white bead
项链上的第一个和第二个珠子已经在图中标出了。
图 A 也可以用一个由 b 和 r 组成的字符串直接表示,b 代表蓝色而 r 代表红色,如下所示:brbrrrbbbrrrrrbrrbbrbbbbrrrrb。
假设你想从项链的某处将它截断拉直;接着从一端向另外一端数收集同颜色的珠子,直到碰到一个不同颜色的珠子为止;然后再从另外一端做同样的操作。(一端收集的珠子颜色可以不同于另一端的。)
请想办法找到一个截断项链的位置,能够让我们尽量多地收集到同色的珠子。
例子
如图 A 中的项链,从第 9 和第 10 个或者第 24 和第 25 个珠子中间截断,则我们可以收集到 8 个珠子。
图 B 中的项链有白色的珠子,当遇到白色的珠子时,它既可以作为蓝色的珠子看待,也可以作为红色的珠子看待,由收集珠子时的需求决定。包含有白色珠子的项链则会由 r、b 和 w 字符组成的字符串来表示。
请编写一个程序计算从某条项链中能够收集到多少个珠子。
输入
第一行: N,项链上珠子的个数
第二行:一个字符串,长度为 N,由 r、b和 w字符组成
输出
输出一行字符,它应该包含了计算出的结果。
输入样例
29
wwwbbrwrbrbrrbrbrwrwwrbwrwrrb
输出样例
11
暴力
#include<stdio.h>#include<string.h>int n, i, j;char ch[400];int vis[400];int main(){freopen("in.txt","r",stdin);freopen("out.txt","w",stdout);int max = 0,ans;int st;char c ;while(scanf("%d", &n)!=EOF){memset(ch,0,sizeof(ch));max=0;scanf("%s", ch);for(i=0;i<n;i++){ans=0;memset(vis,0,sizeof(vis));st=i-1;if(st<0)st+=n;if(ch[st]=='w')c=0;else c=ch[st];for(j=i-1;;j--){if(j<0)j=j+n;if(c==0&&ch[j]!='w')c=ch[j];if(ch[j]!=c&&ch[j]!='w'&&c)break;if(vis[j])break;vis[j]=1;}st=i;if(ch[st]=='w')c=0;else c=ch[st];for(j=i;;j++){if(j>=n)j=j-n;if(c==0&&ch[j]!='w')c=ch[j];if(ch[j]!=c&&ch[j]!='w'&&c)break;if(vis[j])break;vis[j]=1;}for(j=0;j<n;j++){if(vis[j])ans++;}if(ans>max)max=ans;}printf("%d\n", max);}}
0 0
- BIT2014级软件学院程序设计-12 编程珠玑
- BIT2014级软件学院程序设计-08传送带
- BIT2014级软件学院程序设计-11 条形码
- BIT2014级软件学院程序设计-16 魔方
- BIT2014级软件学院程序设计-17 迷宫
- BIT2014级软件学院程序设计-01球体问题
- BIT2014级软件学院程序设计-02进制转换
- BIT2014级软件学院程序设计-03 Flip Game
- BIT2014级软件学院程序设计-04合并果子
- BIT2014级软件学院程序设计-05 修剪草坪
- BIT2014级软件学院程序设计-06贪婪的你
- BIT2014级软件学院程序设计-07 Crossing River
- BIT2014级软件学院程序设计-09 Easier Done Than Said
- BIT2014级软件学院程序设计-10 ⑨的统计
- BIT2014级软件学院程序设计-13 平面上的邮局
- BIT2014级软件学院程序设计-14 比赛记分问题
- BIT2014级软件学院程序设计-15 Ultra-QuickSort
- BIT2014级软件学院程序设计-18 A Knight's Journey
- C++第一次实验1-1
- 快速开发框架androidannotations
- 03.C++学习笔记------C++默默编写哪些函数
- 二叉树 非递归遍历
- Python根据经纬度求两点间距离
- BIT2014级软件学院程序设计-12 编程珠玑
- 属性动画相关使用
- Highcharts技巧总结(持续更新)
- iOS(学习) UITableView
- Android开发中实现多点触摸
- IIS发布asp.net项目,要做的准备工作及添加项目
- java小游戏第三弹 贪吃蛇
- TCP/IP参考模型
- Python脚本语言学习