Przeszukiwanie wyczerpujące

0

Witajcie
Mam do napisania taki program,który powie czy można zakwaterować osoby do pokoi w motelu w sposób,że osoby będące w pokoju się nie znają.Dostajemy informacje o tym kto kogo zna-zapisuję to sobie w tablicy.Problem pojawia się w użyciu funkcji sprawdzającej czy taki kwaterunek da się wykonać.Mam tutaj skorzystać z rozwiązania problemu rozstawienia n hetmanów.
Napisałem takie coś ale nie wiem czy pętle wykonuje używając odpowiedniego licznika.

 #include<stdio.h>
#include<stdlib.h>
#include<stdbool.h>

bool zakwateruj(bool **tablica,int *tablica2,int l_pokoi,int l_osob,int nr_osoby)
{
int i;
for(i=0;i<l_pokoi;i++)
{
    if(tablica[nr_osoby][i]==0)
    {
    tablica2[i]=nr_osoby;
    }
    if(nr_osoby=l_pokoi-1) return 0;
    if(zakwateruj(tablica,tablica2,l_pokoi,nr_osoby+1))
    return 0;
    else return 1; 
}//for
}//zakwateruj

int main()
{

int liczbapokoi;//liczba pokoi
int liczbaosob;//liczba osob zapisanych na wyjazd
int liczbaznajomych;//liczba znajomych danej osoby
int i,j;//liczniki dla petli
int numerznajomego;


scanf("%d",&liczbapokoi);
scanf("%d",&liczbaosob);

bool **znajomosci=(bool**)malloc(liczbaosob*sizeof(bool*));
for(i=0;i<liczbaosob;i++)
{
    znajomosci[i]=(bool*)malloc(liczbaosob*sizeof(bool));
}//zaalokowalismy miejsce dla tablicy kwadratowej
//gdzie bedziemy wpisywali kto kogo dokladnie zna(1) lub nie zna(0)

for(i=0;i<liczbaosob;i++)
{
    for(j=0;j<liczbaosob;j++)
    {
	znajomosci[i][j]=0;
    }
}//wyzerowanie tablicy znajomosci

int *gdziekto=(int*)malloc(liczbaosob*sizeof(int));

for(i=0;i<liczbaosob;i++)
{
gdziekto[i]=0;
}//wyzerowanie tablicy gdzie kto sie znajduje

for(i=0;i<liczbaosob;i++)
{
scanf("%d",&liczbaznajomych);
    for(j=0;j<liczbaznajomych;j++)
    {
    scanf("%d",&numerznajomego);
    znajomosci[i][numerznajomego-1]=1;
    //wypelnienie tablicy znajomosci,przejechane po 1 w lewo na indeksach
    }//for dla wczytania sasiadow
}//for dla wypelnienia znajomosciami

}//main

Z pewnością coś namieszałem w funkcji zakwateruj. Chodziłoby mi o nakierowanie na to co robie błędnie.Gotowe rozwiązanie nie wchodzi w grę bo chciałbym coś wynieść z otrzymanej od Was pomocy.
Pozdrawiam :)

0

Edit Na zerowy rzut oka: formatowanie! Zamiast w komentarzu pisac, gdzie konczy sie jaki blok, stosuj wciecia.

Na pierwszy rzut oka - przyjrzyj sie tej instrukcji:

if(nr_osoby=l_pokoi-1) return 0;
          ^^^
0

Jakoś mi z tymi wcięciami nie wychodzi bo pisze w mcedicie. A co do zadania to czy pętla się dobrze obraca-tzn powinna być po pokojach czy jak? Zaraz zobaczę jak to z tym co powiedziałeś,żeby poprawić. Ogólnie to jeszcze powinno mi zapisywać kto jest w jakim pokoju,żeby potem mieć to wyświetlone w kolejności przydzielenia pokojów. :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1