您的位置:首页 > 其它

UVA 110 没有循环的排序程序

2012-08-08 16:13 260 查看
这个题意肿么这么纠结,米兴趣,转一篇

#include<cstdio>
#include<string.h>
#include<stdlib.h>
#include <vector>
using namespace std;

void indent(int n)
{
for(int i=0;i<n;i++)
printf("  ");
}
void make_prog(int cur,int n,const vector<int> &seq)
{
int i;
if(cur==n)
{
indent(n);
printf("writeln(");
for(i=0;i<n;i++)
{
if(i>0) printf(",");
printf("%c",'a'+seq[i]);
}
printf(")\n");
}
else  for(i=cur;i>=0;i--)
{
indent(cur);
if(i<cur) printf("else ");
if(i>0)
printf("if %c < %c then",seq[i-1]+'a',cur+'a');
printf("\n");
vector<int>new_seq=seq;
new_seq.insert(new_seq.begin()+i,cur);
make_prog(cur+1,n,new_seq);
}
}

int main()
{
int m;
scanf("%d\n",&m);
while(m--)
{
int n;
scanf("%d\n",&n);
printf("program sort(input,output);\nvar\n");
printf("a");
int i,j;
for(i=1;i<n;i++) printf(",%c",'a'+i);
printf(" : integer;\nbegin\n  readln(a");
for(i=1;i<n;i++) printf(",%c",'a'+i);
printf(");\n");
vector<int>seq;
seq.push_back(0);
make_prog(1,n,seq);
printf("end.\n");
if(m) printf("\n");
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: