uva 110

来源:互联网 发布:沙特 东风21 知乎 编辑:程序博客网 时间:2024/04/29 15:21
#include <cstdio>#include <iostream>#include <queue>#include <cstring>#include <vector>#include <list>#include <algorithm>using namespace std;char space[][15] = {"", "  ", "    ", "      ",     "        ", "          ", "            ", "             "};char buf[10];void permutation2(int cur, int n, string s){    if(cur == n){        printf("%s", space[cur]);        printf("writeln(");        for(int i = s.size()-1; i >= 0; i --){            printf("%c", s[i]);            if(i != 0) printf(",");        }        printf(")\n");        return ;    }    else {        printf("%s", space[cur]);        for(int i = 0; i <= s.size(); i ++){            string temp = s;            if(s.size() != i) printf("if %c < %c then", s[i], buf[cur]);            if(s.size() != 0) printf("\n");            temp.insert(i, 1, buf[cur]);            permutation2(cur+1, n, temp);            if(s.size() != i) printf("%selse ", space[cur]);        }    }}int main(){    int n, t;    scanf("%d", &t);    while(t--){        scanf("%d", &n);        printf("program sort(input,output);\nvar\n");        for(int i = 0; i < n; i ++){            printf("%c", i+'a');            if(i != n-1) printf(",");        }        printf(" : integer;\nbegin\n");        printf("  readln(");        for(int i = 0; i < n; i ++){            printf("%c", i+'a');            if(i != n-1) printf(",");        }        printf(");\n");        for(int i = 0; i <= 8; i ++)            buf[i] = i+'a';        string s = "";        permutation2(0, n, s);        printf("end.\n");        if(t != 0) printf("\n");    }    return 0;}/*conclusion:13790340 110 Meta-Loopless SortsAccepted C++11 0.066 2014-06-25 03:34:531: 排列生成算法,n插入n-1的排列中去2:用字符串模拟较好,或者用链表list*/

0 0
原创粉丝点击