Написать программу для формирования перестановок строк, взяв следующим образом: ввода: ABCD
Выход:перестановки строки в порядке возрастания
A
AB
AC
AD
ABC
ACD
ABCD
B
BC
BD
BCD
C
CD
D
Но я попытался с помощью назад отслеживания алгоритма в языке Си:
#include <stdio.h>
/* Function to swap values at two pointers */
void swap(char *x, char *y)
{
char temp;
temp = *x;
*x = *y;
*y = temp;
}
void permute(char *a, int i, int n)
{
int j;
if(i == n)
printf("%s\n", a);
else
{
for(j = i; j <= n; j++)
{
swap((a + i), (a + j));
permute(a, i + 1, n);
swap((a + i), (a + j)); //backtrack
}
}
}
int main()
{
char a[] = "ABC";
permute(a, 0, 2);
getchar();
return 0;
}
Вход: ABC
Выход:
ABC
ACB
BAC
BCA
CBA
CAB
Но мне нужна программа для только указанного порядка, как
A
AB
AC
ABC
B
BC
C
Что это имеет отношение к [tag: java]? –
Каков ваш конкретный вопрос? И «исправить мою программу» не вопрос. – kaylum
это звучит как ваш плохой учитель, говорящий нам написать программу, которую вы не смогли написать, но ваш, вероятно, студент, который не может задавать достойный вопрос. –