题目的意思是在一个由ox组成的数组中,输出o,o,x....x,o,o,x.....x,o的个数,其中x.....x表示最少一个x,同时每个字符只能使用一次(难度略降低)。
代码如下
#include<stdio.h> #include<stdlib.h> #define SIZE 10000 static int data[SIZE]; int test(int data[SIZE]); static void build(){ for(int i=0;i<SIZE;i++) data[i]=(rand()%2)? 'o':'x'; } int main(){ for(int l=0;l<10;l++){ build(); printf("%d\n",test(data)); } } int test(int data[SIZE]) { int count=0; for(int i=0;i<SIZE-2;i++){ int index=i; if(data[i]=='o'&&data[i+1]=='o'&&data[i+2]!='o'){ index=index+3; while(data[index]=='x') index++; if(data[index]=='o'&&data[index+1]=='o'&&data[index+2]!='o') { index=index+3; while(data[index]=='x') index++; if(data[index]=='o'){ count++; i=index; } } } } return count; }