Witam z językiem Java nie mam za wiele wspólnego, a potrzebuje wielowątkowej wersji następującego programu:
package nqsek;
import java.io.*;public class Main {
private static String s;
private static int N;
private static boolean przek_p[] = new boolean[256]; // tablica z zajetą prawą przekątną szachownicy
private static boolean przek_l[] = new boolean[256]; // tablica z zajetą lewą przekątną szachownicy
private static boolean kol[] = null; // tablica z zajętymi kolumnami
private static boolean poz[][] = null; // tablica z ustawieniami królowych
private static long licznik = 0; // licznik znalezionych pozycjiprivate static void sedzia(int wiersz) { // wiersz - wiersz w którym sedzia sprawdza czy można ustawić królową
for (int i=0; i<N; i++) { if (!((kol[i]) || (przek_p[i-wiersz+128]) || (przek_l[wiersz+i+128]))) { przek_p[i-wiersz+128] = true; // dodaje przekątne przek_l[wiersz+i+128] = true; kol[i] = true; // dodaje kolumnę poz[i][wiersz] = true; // stawia królową w tablicy if (wiersz<(N-1)) { sedzia(wiersz+1); // analizuje następny wiersz (tylko jeśli nie jesteśmy już w ostatnim) } else { // to jest ostatnia królowa - program zapisuje wynik licznik++; } // po wyjsciu z rekurencji (sedzia(wiersz+1)) program usuwa królową i szukaj dla niej następnego pola przek_p[i-wiersz+128] = false; przek_l[wiersz+i+128] = false; kol[i] = false; poz[i][wiersz] = false; } }
}
public static void main(String[] args) throws IOException { System.out.println("Podaj rozmiar szachownicy NxN = "); BufferedReader stdin = new BufferedReader(new InputStreamReader(System.in), 1); s = stdin.readLine(); N = Integer.parseInt(s); kol = new boolean[N]; poz = new boolean[N][N]; long start = System.currentTimeMillis(); sedzia(0); // stawia pierwszą królową long end = System.currentTimeMillis(); System.out.println("Liczba mozliwych ustawien krolowych: " + licznik); System.out.println("Czas wykonania: " + ((end-start)/1000) + " sekund"); }
}
Jest to program realizujący problem n-królowych od jakiegoś czasu staram sie zrobić jego wersje wielowątkową ale niestety mi sie nie udaje a zaliczenie tuz tuz :/
Z góry dzięki za pomoc lub jakieś wskazówki.