| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
Re:帮我看一下错在哪里。。。谢谢。是RE.In Reply To:帮我看一下错在哪里。。。谢谢。是RE. Posted by:direfire at 2007-10-30 19:50:53 还是RE
#include <stdio.h>
#include <string.h>
#include <iostream>
#include <math.h>
using namespace std;
int m;
char pre[30], post[30];
int len;
long long v[21][21];
long long parse(char *start, char *end, int l)
{
if (l == 0) return 1;
if (l == 1) return 1;
long long ret = 1;
int index[27];
for (int i = 1; i < l; i++)
for (int j = 0; j < l-1; j++)
if (start[i] == end[j]) { index[i] = j; break;}
int id = 1;
int count = 0;
while(id < l)
{
int p = index[id];
int f = 0;
char pe[27], po[27];
memset(pe, '\0', sizeof(pe));
memset(po, '\0', sizeof(po));
while(p >= index[id] && id < len) {pe[f] = start[id]; po[f] = end[id-1]; f++; id++;}
ret *= parse(pe, po, f);
count++;
}
ret *= v[m][count];
return ret;
}
int main()
{
memset(v, 0, sizeof(v));
for (int i = 1; i <= 20; i++) v[i][0] = 1;
v[1][1] = 1;
for (int i = 2; i <= 20; i++)
for (int j = 1; j <= i; j++)
v[i][j] = v[i-1][j-1]+v[i-1][j];
while(1)
{
scanf("%d", &m);
if (m == 0) break;
memset(pre, '\0', sizeof(pre));
memset(post, '\0', sizeof(post));
scanf("%s %s", &pre, &post);
len = strlen(pre);
long long res = parse(pre, post, len);
printf("%ld\n", res);
}
return 0;
}
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator