Gå til innhold

De Berømte Dronninger på et sjakkbrett


Anbefalte innlegg

Videoannonse
Annonse
:blush:  :blush:  :blush:

 

 

Lag en metode public static int antallPlasseringer(int n) i klassen Dronning

 

:cry:

6993322[/snapback]

javel?

har du fått oppgitt noe, eller skal lage alt selv?

i det minste må du vel ha fått en oppgavetekst?

(jeg er ikke så bekjent med disse dronningene, men det går kanskje på å finne en max-verdi for hvormange man kan putte på brettte?)

Lenke til kommentar

Er ikke sikker på hvor mye dette hjelper deg, men denne koden løser problemet med dronningene.

class Dronninger {
public final int maks = 8;
public int[] plass = new int[maks];
private boolean lovlig(int r, int k){
 for (int x=0; x<r; ++x) {
 	int y = plass[x];
 	// if (x == r) return false; // Samme rad - umulig
 	if (y == k) return false; // Samme kolonne
 	if (x-y == r-k) return false; // Samme diagonal
 	if (x+y == r+k) return false; // Samme diagonal
 }
 return true;
}

public boolean plassering(int rad) {
 if (rad == maks) return true; // Ferdig!
 for (int kol=0; kol<maks; ++kol) {
 	if (lovlig(rad, kol)) {
   plass[rad] = kol;
   boolean funnet = plassering(rad+1); // Sjekker resten
   if (funnet) return true; // Plassering OK
   // ellers prøv neste kolonne
 	}
 }
 return false; // Ingen plassering mulig, gå et skritt tilbake
}

public static void main(String[] args) {
 Dronninger d = new Dronninger();
 if (d.plassering(0)) {
 	for (int i=0; i<d.maks; ++i) {
   System.out.print("(" + i + ", " + d.plass[i] + ") ");
 	}
 	System.out.println();
 }
 else System.out.println("Ingen løsning mulig");
}
}

Koden er ikke iht oppgaven som du viser til, men kan kansje gi noen tips.

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...