swun 项链
来源:互联网 发布:退货 淘宝客服不回 编辑:程序博客网 时间:2024/05/17 08:41
描述
给你一条项链(圆环),由N颗水晶珠组成。每颗水晶珠由C或J水晶组成。现在给你一个任务,如下:
1.从项链的任意一个位置将项链切开,形成一条链;
2.从形成的链的任意一头开始收集水晶珠;
3.在满足手中的C水晶数要大于等于J水晶数的情况下,收集完所有的水晶珠;
最后,你的任务是数出切项链的方法有多少种,也就是说满足条件的位置有多少个。
输入
第一行输入测试实例的个数T(T<=10),接下来的T行,每行一个字符串S(2<=strlen(S)<=1000);
输出
每个测试实例输出一行“Case x: d” ,x表示测试实例的数目(从1开始),d指切的方法有多少种。
样例输入
2
CJCJCJ
CCJJCCJJCCJJCCJJ
样例输出
Case 1: 6
Case 2: 8
简单的模拟题,从项链的任一端开始遍历,遇到C就+1,遇到J就-1,显然C要大于等于J,也就是结果要大于0,当结果小于0的时候就结束.....
#include<stdio.h>#include<string.h>int main(){ char str[1010]; int T,i,j,temp,ans,sum,z=1,k; scanf("%d",&T); while(T--){ scanf("%s",str); ans=0; int l1=strlen(str); for(i=0;i<l1;i++){ temp=0; k=0; for(j=i;j<l1;j++){ if(str[j]=='C') temp++; if(str[j]=='J') temp--; if(temp<0) break; } if(temp>=0){ for(j=0;j<i;j++){ if(str[j]=='C') temp++; if(str[j]=='J') temp--; if(temp<0) break; } } if(temp>=0) {ans++;k=1;} if(k==0){ //一个方向找不到,换另一个方向 temp=0; for(j=i-1;j>=0;j--){ if(str[j]=='C') temp++; if(str[j]=='J') temp--; if(temp<0) break; } if(temp>=0){ for(j=l1-1;j>i;j--){ if(str[j]=='C') temp++; if(str[j]=='J') temp--; if(temp<0) break; } if(temp>=0) ans++; } } } printf("Case %d: %d\n",z++,ans); }}
- swun 项链
- swun 1445 项链
- SWUN 才艺
- SWUN CD8
- SWUN Card
- SWUN 调戏
- SWUN 1763
- SWUN 1165 - 司马称好
- SWUN 1150 - 财务报表
- SWUN 1012 - Card
- SWUN 1303 - 魔法学徒
- SWUN 1066 - 电话线
- SWUN 1428 - 行星球体
- SWUN 1075 - CD8
- SWUN 狼人杀
- SWUN 永不言败
- swun 休想逃跑
- SWUN 1433 - Count
- 一些好的学习网址
- 2012.9.2 Reading Material
- 猫鼠博弈
- 风的世界里有海的七滴泪水
- 计算几何之判断两线段是否相交
- swun 项链
- android转屏,切换屏幕,横竖屏(onConfigurationChanged)会重新 OnCreate 的解决方案
- 想学单片机,向ARM方向发展或者路由
- 求两个字符串最长公共子串LCS(其它)
- 回溯法
- SWT/Jface treeviewer 拖拽样式
- android图片缩放、放大demo
- poj 2488 A Knight's Journey 骑士周游
- 书香与女人