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 |
递归,代码,此题坚决不用STL,那样太没意思In Reply To:Re:呵呵,递归108K 31MS ac 掉了 Posted by:calme at 2009-07-19 15:06:19 #include <iostream> #include <algorithm> using namespace std; #define MAXN 13 char a[MAXN + 1]; int len; char flag[MAXN]; char s[MAXN + 1]; bool cmp(char a, char b) { return tolower(a) == tolower(b) ? a < b : tolower(a) < tolower(b); } void solve(int n) { if (n == len) { puts(s); return; } for (int i = 0; i < len; i++) { if (! flag[i]) { flag[i] = 1; s[n] = a[i]; solve(n + 1); flag[i] = 0; while (i + 1 < len && a[i + 1] == a[i]) i++; } } } int main() { int CASE; scanf("%d", &CASE); while (CASE--) { scanf("%s", a); len = strlen(a); sort(a, a + len, cmp); memset(flag, 0, sizeof(flag)); s[len] = 0; solve(0); } return 0; } Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator