首页 > 代码库 > AB串

AB串

题目:

给定n个A和2n个B,用这些字符拼成一个字符串,要求这个串的所有前缀和后缀B的个数始终不少于A。

(一个字符串的前缀是只从开头到某个位置为止的子串,后缀是只从某个位置到结尾的子串)。

输入格式

多组数据,每组数据只有一行,包含一个正整数n。(n<=10^17)。

输出格式

每组数据输出一行,最终结果对99991取余数的结果。


分析:

简单的想法是建立一个二叉树,深度遍历一下即可。但是效率太低,对比较大的n不太适用,暂时没想到什么好办法,先简单的做做看。


代码:


<span style="font-size:18px;">#include <stdio.h>
#include <stdlib.h>

struct Node {
	int value;
	struct Node *left;
	struct Node *right;
};

#define n 3
static int result = 0;
static int index = 0;
static int array[3 * n] = {0};

struct Node* initNode()
{
    struct Node* temp = (struct Node *)malloc(sizeof(struct Node));
    temp->value = http://www.mamicode.com/0;>