OXPattern
10000的随机数组由ox组成,查找数组中oox...x(任意x)oox....x(任意x)o的个数
enum {
DATA_SIZE = ,
}; enum enum_status {
STATUS_FOUND = ,
STATUS_ERR,
STATUS_NOT_FOUND, //ALL 'X'
}; enum_status findOOX(int data[DATA_SIZE], int start, int& index) {
for(int i = start; i < DATA_SIZE - ; i++) {
if(data[i] == 'O' && data[i + ] == 'O' && data[i + ] == 'X') {
index = i;
return STATUS_FOUND;
} if(data[i] == 'O' && (data[i + ] != 'O' || data[i + ] != 'X')) {
index = i;
return STATUS_ERR;
}
}
return STATUS_NOT_FOUND;
} bool findO(int data[DATA_SIZE], int start, int& index) {
for(int i = start; i < DATA_SIZE; i++) {
if(data[i] == 'O') {
index = i;
return true;
}
}
return false;
} int test_main(int data[DATA_SIZE]) {
enum_status stat = STATUS_NOT_FOUND;
int count = ;
int index = ; for(int i = ; i < DATA_SIZE; i++) {
stat = findOOX(data, i, index);
if(stat == STATUS_NOT_FOUND) {
break;
} if(stat == STATUS_ERR) {
i = index; //TODO
continue;
}
i = index + ; stat = findOOX(data, i, index);
if(stat == STATUS_NOT_FOUND) {
break;
} if(stat == STATUS_ERR) {
i = index; //TODO
continue;
}
i = index + ; if(findO(data, i, index)) {
count++;
i = index;
}
else {
break;
} } return count;
}
用于生成测试用例的demo:
#include <stdio.h>
#include <stdlib.h> #define SIZE 10000 int test_main(int data[SIZE]); static int data[SIZE]; static void build_data(void)
{
for (int a = ; a < SIZE; a++)
{
data[a] = (rand() % ) ? 'O' : 'X';
}
} void main(void)
{
for (int l = ; l < ; l++)
{
build_data(); printf("%d\n", test_main(data));
}
system("pause");
}
OXPattern的更多相关文章
随机推荐
- Goldengate常用命令
1.Goldengate的起停 启动goldengate a> 启动goldengate时最好先从target节点开始,然后是source节点.否则data pump进程可能会由于没有收到t ...
- Android——主流分辨率
VGA:480*640 QVGA:240*320 HVGA:320*480 WVGA:480*800 FWVGA:480*854 IntelHaxm.exe 模拟器加速器
- ios 对齐属性
四个容易混淆的属性:1. textAligment : 文字的水平方向的对齐方式1> 取值NSTextAlignmentLeft = 0, // 左对齐NSTextAlignme ...
- android 数据存储----文件方式 总结
在android中的文件放在不同位置,它们的读取方式也有一些不同. 本文对android中对资源文件的读取.数据区文件的读取.SD卡文件的读取及RandomAccessFile的方式和方法进行了整理. ...
- 001 The Hello World In Csharp
C#是面向对象编程语言,语法和JAVA非常相似.接下来让我们看一下C#的Hello world. //001.cs using System; public class Hello { public ...
- JS获取当前文件所在的文件夹全路径
var js = document.scripts; js = js[js.length - 1].src.substring(0, js[js.length - 1].src.lastIndexOf ...
- MSP430F149学习之路——LED
#include <msp430x14x.h> void int_clk(); void delay(int i); void main() { WDTCTL = WDTPW + WDTH ...
- centos 7 安装音乐播放器(亲测可用)
方法来源网上,非原创. 1. Install the nux repo $> su - $> yum update # optional but recommanded $> rp ...
- BZOJ1029 建筑抢修
Description 小刚在玩JSOI提供的一个称之为"建筑抢修"的电脑游戏:经过了一场激烈的战斗,T部落消灭了所有z部落的入侵者.但是T部落的基地里已经有N个建筑设施受到了严重 ...
- 洛谷P1459 三值的排序 Sorting a Three-Valued Sequence
P1459 三值的排序 Sorting a Three-Valued Sequence 166通过 369提交 题目提供者该用户不存在 标签USACO 难度普及- 提交 讨论 题解 最新讨论 那么 ...