De opdracht luidt als volgt: Je krijgt 2 rijen. Is de ene een permutatie van de andere. Ik heb hiervoor een programma geschreven, maar ik vind het nogal vrij complex voor wat het uiteindelijk maar moet doen. Alleen vind ik geen eenvoudigere methode. Toch zou ik graag een eenvoudigere methode hebben als die bestaat, kwestie van ook op het examen efficiënter te werk te kunnen gaan. Dit is mijn code:
Code: Selecteer alles
public class permutatiesnietcyclisch {
/**
* @param args
*/
public static void main(String[] args) {
int[] rij1 = { 2,1,4,5,3};
int[] rij2 = { 5,4,2,3,1};
permutatiesnietcyclisch.test(rij1, rij2, 6);
}
static public void test(int[] rij1, int[] rij2, int N) {
boolean[] rij11 = new boolean[rij1.length];
boolean[] rij22 = new boolean[rij2.length];
if ((rij1.length == rij2.length) && (rij1.length < N)) {
for (int i = 0; i < rij1.length; i++) {
boolean a = false;
int teller = 0;
for (int j = 0; j < rij1.length; j++) {
if ((rij1[i] == rij2[j]) && (teller == 0)) {
teller = teller + 1;
a = true;
} else if ((teller == 1) && (a == true)) {
a = true;
} else {
a = false;
}
}
rij22[i] = a;
teller = 0;
for (int j = 0; j < rij1.length; j++) {
if ((rij1[i] == rij1[j]) && (teller == 0)) {
teller = teller + 1;
rij11[i] = true;
} else if ((teller == 1) && (rij1[i] == rij1[j])) {
rij11[i] = false;
} else if ((teller == 1) && (rij1[i] != rij1[j])) {
rij11[i] = true;
} else {
rij11[i] = false;
}
}
}
boolean z = false;
for (int i = 0; i < rij11.length; i++) {
if (rij11[i] == rij22[i]) {
z = true;
} else {
i = rij11.length;
z = false;
}
}
System.out.println(z);
} else {
System.out.println("Foute invoer!");
}
}
}