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的更多相关文章
随机推荐
- ASP.NET MVC开发微信(一)
public string index() { return Content(""); }
- js压缩反压缩
JavaScript unpacker and beautifier JavaScript Beautifier http://prettydiff.com/?m=beautify&s=htt ...
- jad 反编译 jar包
1.利用winrar解压缩jar包 或者CMD>jar -xvf test.jar -C classes 2.下载jad,利用jad反编译jar包 CMD>[jad_home]/jad.e ...
- 多线程——GCD
一. GCD的基本概念 GCD:强大的中枢调度,纯C语言,提供了非常多强大的函数. 任务(block):执行什么操作. 队列(queue):用来存放任务. 同步函数dispatch_sync():不创 ...
- 如何让 Drupal 使用 Wordpress 形式的编辑代码?
如果你曾有过将 Wordpress 网站迁移到 Drupal 的经验,很可能客户会问的第一件事就是如何为 Drupal 添加编辑代码. Wordpress 中的 Shortcodes 插件让使用者可以 ...
- 在使用 AjaxFileUpload 上传文件时,在项目发布到 iis 后,图片不能预览
在使用 AjaxFileUpload 上传文件时,图片已经上传成功了,在站点没有发布时,可以预览,可是在项目发布到 iis 后,图片就不能预览,在网上找了很多的方案也没解决,最后的解决方案如下: 1 ...
- Java基础——IO流
今天刚刚看完java的io流操作,把主要的脉络看了一遍,不能保证以后使用时都能得心应手,但是最起码用到时知道有这么一个功能可以实现,下面对学习进行一下简单的总结: IO流主要用于硬板.内存.键盘等处理 ...
- 记录网上资源URL
FQ(使用路由器): http://kennylee26.iteye.com/blog/1887753 http://www.iteye.com/search?type=all&query=s ...
- CSS垂直水平居中方法整理
CSS定位中常常用到垂直居中,比如覆盖层上的弹框. 兼容性比较好的方法: <!DOCTYPE html PUBliC "-//W3C//DTD XHTML 1.0 Transition ...
- Leetcode049. Group Anagrams
//hashmap implement with STL class Solution { public: vector<vector<string>> groupAnagra ...