Оговорюсь сразу: я не претендую на роль Java-гуру, я только учусь. Так что те программы, которые вы здесь встретите, могут показаться вам непрофессиональными и ламерскими. Возможно кому-то они покажутся интересными. И тем и другим предлагаю оставлять свои комментарии после статьи (внизу страницы).
Нижеследующая программа генерирует все перестановки чисел от 1 до n. Число n задается "в лоб" в теле функции main().
public class trans
{
static int max = 20;
static int n;
static int p[] = new int[max];
static boolean used[] = new boolean[max];
public final static void finish()
{
for (int i=0;i<n;i++) System.out.print ((p[i]+1)+" ");
System.out.println();
}
public final static void step(int k)
{
if (k==n) finish();
else{
for (int i=0;i<n;i++)
if (!used[i])
{
used[i] = true;
p[k] = i;
step(k+1);
used[i] = false;
}
}
}
public final static void main (String s[])
{
n = 3;
for (int i=0;i<n;i++) used[i] = false;
step (0);
}
}
Например при n=3 программа выведет следующее:
1 2 3
1 3 2
2 1 3
2 3 1
3 1 2
3 2 1
19.03.2002 |