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的更多相关文章
随机推荐
- JDBC数据更新
在JDBC中通常用Statement类的对象实现对数据库的更新(增.删.查.改)操作 //1.获取数据库连接 connection = getConnection(); //2.准备sql语句 Str ...
- leetcode 349:两个数组的交集I
Problem: Given two arrays, write a function to compute their intersection. 中文:已知两个数组,写一个函数来计算它们的交集 E ...
- C# OpenFileDialog
OpenFileDialog 用于浏览并打开文件,在Windows Forms中使用,表现为标准的Windows对话框. 实例: 1.新建Windows Form Application 2.添加Op ...
- cocos2d-x 3.x丨搭建Android环境下的开发环境
所需要的一些工具软件: 1.JDK 官网下载地址:http://www.oracle.com/ttechnetwork/java/javase/downloads/index.html 2.Andr ...
- 一步一步学习Unity3d学习笔记系1.4单服模式架构
单服模式更适合做手游,只有一个服务器,在程序中通过代码模块来实现各功能,而不是物理模块划分. 登录模块实现,账号数据处理, 用户模块,处理角色权限处理, 匹配模块,匹配战斗 好友模块,负责好友管理 战 ...
- Editplus 注册码
EditPlus 是一款功能强大的文字处理软件.它可以充分的替换记事本,它也提供网页作家及程序设计师许多强悍的功能.支持 HTML.CSS.PHP.ASP.Perl.C/C++.Java.JavaSc ...
- 查看Eclipse版本号的方法
查看Eclipse版本号的方法如下所示: 1:假设Eclipse已打开Eclipse的菜单栏: Help-->About Eclipse弹出框中会显示一排logo,点击eclipse的那个log ...
- Puppet安装与配置简介(附视频教程)
Puppet是一种Linux平台的集中配置管理系统,他可管理配置文件.用户.cron任务.软件包.系统服务等.puppet把这些系统实体称之为资源,puppet采用C/S星状的结构,所有的客户端和一个 ...
- 在C++中调用DLL中的函数 (3)
1.dll的优点 代码复用是提高软件开发效率的重要途径.一般而言,只要某部分代码具有通用性,就可将它构造成相对独立的功能模块并在之后的项目中重复使用.比较常见的例子是各种应用程序框架,ATL.MFC等 ...
- git贡献代码流程
1.本地创建ssh key: $ ssh-keygen -t rsa -C "your_email@youremail.com" 2.回到github,进入Account Sett ...