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 |
半夜超时。。。。#include<iostream> #include<string> #include<stdlib.h> using namespace std; int cmp ( const void *a , const void *b ) { return *(int *)a - *(int *)b; } void change(int &a, int &b) { int t; t = a; a = b; b = t; } int factorial(int n) { int sum = 1, i; for(i = 1; i <= n; i ++) sum *= i; return sum; } int main() { //freopen("in.txt","r",stdin); int N; char letter[14]; int gg[14]; int i, len; scanf("%d", &N); while(N --) { while(scanf("%s", letter) != EOF) { len = strlen(letter); for(i = 0; i < len; i ++) { if(letter[i] >= 'A' && letter[i] <= 'Z') //表明大写 gg[i] = (letter[i] - 'A') * 2; else //letter[] >= 'a' && letter[] <= 'z' gg[i] = (letter[i] - 'a') * 2 + 1; // 为了产生这个顺序 'A'<'a'<'B'<'b'<...<'Z'<'z'. //接下来把顺序枚举即可 } qsort(gg,len,sizeof(gg[0]),cmp); //从小到大排列 for(i = 0; i < len; i ++) { if(gg[i] % 2 != 0) { printf("%c", (gg[i] - 1) / 2 + 'a'); } else printf("%c", gg[i] / 2 + 'A'); } cout << endl; int p; int MAX = 24; for(int k = 0; k < factorial(len) - 1; k ++) { for(i = 0; i < len; i ++) { p = len - 1; if(gg[p] > gg[p - 1]) { change(gg[p], gg[p - 1]); for(i = 0; i < len; i ++) { if(gg[i] % 2 != 0) { printf("%c", (gg[i] - 1) / 2 + 'a'); } else printf("%c", gg[i] / 2 + 'A'); } printf("\n"); } else {//a[p] < a[p - 1] //p --; while(gg[p] <= gg[p - 1]) { //while(gg[p] < gg[p - 1]) 一个符号改了我1个半小时 天!! p --; } if(p < 1) break; int min = 100; int tt = 0; int j; for(j = p; j < len; j ++) { if(gg[j] <= min && gg[j] > gg[p - 1]) { min = gg[j]; tt = j; } } change(gg[p - 1], gg[tt]); qsort(gg + p, len - p, sizeof(int), cmp); for(i = 0; i < len; i ++) { if(gg[i] % 2 != 0) { printf("%c", (gg[i] - 1) / 2 + 'a'); } else printf("%c", gg[i] / 2 + 'A'); } printf("\n"); } } } } } return 0; } Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator