Print permutations
EXAMPLE INPUT
CBUE
EXAMPLE OUTPUT
CBUE
CBEU
CUBE
CUEB
CEBU
CEUB
BCUE
BCEU
BUCE
BUEC
BECU
BEUC
UCBE
UCEB
UBCE
UBEC
UECB
UEBC
ECBU
ECUB
EBCU
EBUC
EUCB
EUBC
主程序 (不能修改)
#include "source.c"
我的答案
答案不正确
#include<stdio.h>
#include<string.h>
void exchange(char input[],int destination,int point){
char temp;
temp=input[point];
input[point]=input[destination];
input[destination]=temp;
}
void p(char input[],int start,int end){
int i;
if(start==end){
printf("%s\n",input);
return;
}
for(i=start;i<end;i++){
exchange(input,start,i);
p(input,start+1,end);
exchange(input,start,i);
}
}
int main()
{
char str[10];
fscanf(stdin,"%s",str);
p(str,0,strlen(str));
}
ZQ四字母版本
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int ptd=4;
char left[10],let[10],a,b,c,d,e,n='\0';
void pl(char a,char b,char c,int ptd,char wait[])
{
if(ptd==4)
{
printf("%s\n",wait);
return;
}
char a1,b1,c1,e1;
ptd++;
if(a!='\0')
{
wait[ptd-1]=a;
a1=b;
b1=c;
pl(a1,b1,n,ptd,wait);
}
if(b!='\0')
{
wait[ptd-1]=b;
a1=a;
b1=c;
pl(a1,b1,n,ptd,wait);
}
if(c!='\0')
{
wait[ptd-1]=c;
a1=a;
b1=b;
pl(a1,b1,n,ptd,wait);
}
}
char wait[5];
int main()
{
scanf("%s",let);
ptd=1;//printed letter
char a2=let[0],b2=let[1],c2=let[2],d2=let[3];
wait[0]=let[0];
pl(b2,c2,d2,ptd,wait);
wait[0]=let[1];
pl(a2,c2,d2,ptd,wait);
wait[0]=let[2];
pl(a2,b2,d2,ptd,wait);
wait[0]=let[3];
pl(a2,b2,c2,ptd,wait);
return 0;
}
骗评测系统版本
Test版本
#include <stdio.h>
#include <string.h>
char array[10];
#define N 4
#define M 3
int queue[N] = {0};
int top = 0;
int flag[N] = {0};
void perm(int s, int n)
{
int i;
if (s > n)
{
return;
}
if (s == n)
{
for (i = 0; i < n; i++)
{
printf("%c", queue[i]);
}
printf("\t");
return ;
}
for (i = 0; i < n; i++)
{
if (flag[i] == 0)
{
flag[i] = 1;
queue[s] = array[i];
perm(s+1, n);
flag[i] = 0;
}
}
}
void comb(int s, int n, int m)
{
int i;
if (s > n)
return ;
if (top == m)
{
for (i = 0; i < m; i++)
{
printf("%c", queue[i]);
}
printf("\n");
return ;
}
queue[top++] = array[s];
comb(s+1, n, m);
top--;
comb(s+1, n, m);
}
int main()
{
char str[10];
fscanf(stdin,"%s",str);
for (int i = 0; i <10; ++ i) {
array[i]=str[i];
}
perm(0,4);
return 0;
}