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的更多相关文章

随机推荐

  1. ASP.NET MVC开发微信(一)

    public string index() { return Content(""); }

  2. js压缩反压缩

    JavaScript unpacker and beautifier JavaScript Beautifier http://prettydiff.com/?m=beautify&s=htt ...

  3. jad 反编译 jar包

    1.利用winrar解压缩jar包 或者CMD>jar -xvf test.jar -C classes 2.下载jad,利用jad反编译jar包 CMD>[jad_home]/jad.e ...

  4. 多线程——GCD

    一. GCD的基本概念 GCD:强大的中枢调度,纯C语言,提供了非常多强大的函数. 任务(block):执行什么操作. 队列(queue):用来存放任务. 同步函数dispatch_sync():不创 ...

  5. 如何让 Drupal 使用 Wordpress 形式的编辑代码?

    如果你曾有过将 Wordpress 网站迁移到 Drupal 的经验,很可能客户会问的第一件事就是如何为 Drupal 添加编辑代码. Wordpress 中的 Shortcodes 插件让使用者可以 ...

  6. 在使用 AjaxFileUpload 上传文件时,在项目发布到 iis 后,图片不能预览

    在使用 AjaxFileUpload  上传文件时,图片已经上传成功了,在站点没有发布时,可以预览,可是在项目发布到 iis 后,图片就不能预览,在网上找了很多的方案也没解决,最后的解决方案如下: 1 ...

  7. Java基础——IO流

    今天刚刚看完java的io流操作,把主要的脉络看了一遍,不能保证以后使用时都能得心应手,但是最起码用到时知道有这么一个功能可以实现,下面对学习进行一下简单的总结: IO流主要用于硬板.内存.键盘等处理 ...

  8. 记录网上资源URL

    FQ(使用路由器): http://kennylee26.iteye.com/blog/1887753 http://www.iteye.com/search?type=all&query=s ...

  9. CSS垂直水平居中方法整理

    CSS定位中常常用到垂直居中,比如覆盖层上的弹框. 兼容性比较好的方法: <!DOCTYPE html PUBliC "-//W3C//DTD XHTML 1.0 Transition ...

  10. Leetcode049. Group Anagrams

    //hashmap implement with STL class Solution { public: vector<vector<string>> groupAnagra ...