博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
USACO 1.1.4 Broken Necklace
阅读量:5021 次
发布时间:2019-06-12

本文共 2858 字,大约阅读时间需要 9 分钟。

//译题★Broken Necklace 破碎的项链你有一条由N 个红色的,白色的,或蓝色的珠子组成的项链(3<=N<=350),珠子是随意安排的. 这里是 n=29 的二个例子:1 2 1 2r b b r b r r br b b br r b rr r w rb r w wb b r rb b b bb b r br r b rb r r rb r r rr r r br b r r r w图片 A 图片 Br 代表 红色的珠子b 代表 蓝色的珠子w 代表 白色的珠子第一和第二个珠子在图片中已经被作记号.图片 A 中的项链可以用下面的字符串表示:brbrrrbbbrrrrrbrrbbrbbbbrrrrb .假如你要在一些点打破项链,展开成一条直线,然后从一端开始收集同颜色的珠子直到你遇到一个不同的颜色珠子,在另一端做同样的事.(颜色可能与在这之前收集的不同) 确定应该在哪里打破项链来收集到最大多数的数目的子. Example 举例来说,在图片 A 中的项链,可以收集到8 个珠子,在珠子 9 和珠子 10 或珠子 24 和珠子 25 之间打断项链. 在一些项链中,包括白色的珠子如图片 B 所示. 当收集珠子的时候,一个被遇到的白色珠子可以被当做红色也可以被当做蓝色. 表现项链的字符串将会包括三符号 r , b 和 w . 写一个程序来确定从一条被供应的项链最大可以被收集珠子数目.PROGRAM NAME: beadsINPUT FORMAT第 1 行: N, 珠子的数目第 2 行: 一串度为N 的字符串, 每个字符是 r , b 或 w.SAMPLE INPUT (file beads.in)29wwwbbrwrbrbrrbrbrwrwwrbwrwrrbOUTPUT FORMAT单独的一行包含从被供应的项链可以被收集的珠子数目的最大值.SAMPLE OUTPUT (file beads.out)11

 

/*ID: china_l5LANG: CTASK:beads*/#include
#include
#define MAX (350 + 10)int main(){ freopen("beads.in", "r", stdin); freopen("beads.out", "w", stdout); int i, j, N, T; int max=0, count1, count2; char s[MAX*2], str[MAX], tmp; memset(s,0,sizeof(s)); scanf("%d",&N); //读入N getchar(); //如果没有这句,接受完会跳过下面的gets(str); gets(str); strcpy(s,str); //复制字符串 strcat(s,str); //连接字符串 ,将环转化为链 /* 或者使用下面方法将一个字符串存两遍使得环转化为链。 scanf("%d %s",&N, s); for(i=0;i
=i;j--) //然后继续扫描 { if(s[j] == 'w') //如果是‘w’,count+1; 继续循环 { count2++; continue; } else if(s[j] == tmp) //如果字符和tmp相等,count+1,继续循环 { count2++; continue; } break; } max=(max>(count1+count2))?max:(count1+count2);// printf("%d %d %d\n",max,count1,count2); 可以用这句来查看count1,count2 和 max } if(max>N) max = N; printf("%d\n", max); return 0;}

精简后的代码

1 /* 2 ID: china_l5 3 LANG: C 4 TASK:beads 5 */ 6 #include
7 #include
8 #define MAX (350 + 10) 9 10 int main()11 {12 freopen("beads.in", "r", stdin);13 freopen("beads.out", "w", stdout);14 15 int i, j, N, T;16 int max=0, count1, count2;17 char s[MAX*2], str[MAX], tmp;18 memset(s,0,sizeof(s));19 20 scanf("%d",&N); 21 getchar(); 22 gets(str);23 strcpy(s,str); 24 strcat(s,str); 25 26 for(i=0;i
=i;j--) 56 {57 if(s[j]!=tmp && s[j]!='w') 58 break;59 count2++;60 }61 max=(max>(count1+count2))?max:(count1+count2); 62 }63 if(max>N) max = N;64 printf("%d\n", max);65 return 0;66 }

 

转载于:https://www.cnblogs.com/Lee-geeker/p/3223191.html

你可能感兴趣的文章
十进制、八进制、二进制之间的转换
查看>>
N皇后问题(暴力dfs)
查看>>
区间调度问题
查看>>
UIButton的创建与释放问题
查看>>
django认证系统
查看>>
IO - 同步,异步,阻塞,非阻塞 (亡羊补牢篇)
查看>>
Coursera, Deep Learning 4, Convolutional Neural Networks - week1
查看>>
java IO流2
查看>>
zookeeperCli和Java操作zookeeperAPI
查看>>
python的正则表达式
查看>>
schema
查看>>
ubuntu开发环境搭建
查看>>
Android之图片加载框架Fresco基本使用(一)
查看>>
使用JavaScript和D3.js实现数据可视化
查看>>
Nginx 的 Timeout Wait 解决
查看>>
为何F8是灰色的?单步调试不了呀? code blocks里面 build options是灰色一直点不了。 有编译器/// 在用codeblocks反编译的时候可能会遇到这样的问题。...
查看>>
第九周作业
查看>>
SelectObject()函数
查看>>
剑指offer 把字符串转化为整数
查看>>
PHP的curl实现get,post 和 cookie (转)
查看>>