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.#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 comp(long long a1, long long b1) { if (a1 == 1) return 1; if (b1 ==1) return a1; if (a1-b1 < b1) b1 = a1-b1; long long ret = 1; for (long long i = a1; i >= (a1-b1+1); i--) ret *= i; for (long long i = b1; i >= 1; i--) ret/=i; return ret; } 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 *= comp(m, count); return ret; } int main() { 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