infoarena

infoarena - concursuri, probleme, evaluator, articole => Probleme externe => Subiect creat de: Petru Trimbitas din Septembrie 25, 2010, 19:43:40



Titlul: Movie Seating-top coder
Scris de: Petru Trimbitas din Septembrie 25, 2010, 19:43:40
Problem Statement
    
Elly and some of her friends (possibly none) are going to the movies. Their company consists of numFriends people, including Elly. Since they don't want to be spread across the entire hall, they decided to sit either in the same row or in the same column (though not necessarily next to one another).  Your are given a vector <string> hall representing the layout of seats in the theater that are already taken. The j-th character of the i-th element of hall will be '#' if the seat at row i, column j is already taken and '.' if it is empty.  Return the number of different ways for Elly and her friends to choose numFriends different empty seats so that their seating requirement is fulfilled. Two ways are considered different if there exists a person in their company that will sit in different seats in these two ways.

Examples
0)

    
2
{ ".#..",
  ".##.",
  "...." }
Returns: 34
Here the movie hall has 3 rows and 4 columns. The second seat in the first row is taken, as well as the seats in the middle of the second row.


De ce e 34? Eu m-am gandit ca ar trebui sa fie o suma din aranjamente(nrloclibere,nrprieteni) de pe fiecare linie si coloana


Titlul: Răspuns: Movie Seating-top coder
Scris de: Mihai Calancea din Septembrie 25, 2010, 21:22:56
Asa si este. Si suma iti da 34 pe exemplu.


Titlul: Răspuns: Movie Seating-top coder
Scris de: Petru Trimbitas din Septembrie 26, 2010, 11:42:36
Dupa ce formula calculezi aranjamentele? Nu dupa n(n-1)(n-2)...(n-k+1). Daca calculezi asa nu da 34


Titlul: Răspuns: Movie Seating-top coder
Scris de: Mihai Calancea din Septembrie 26, 2010, 13:10:16
3 * A(3,2) ( coloana 1 si 4 , linia 1)  + 2 * A (2,2) ( linia 2 si coloana 3) + 1 * A(4,2) ( linia 3) =
3 * 6 + 2 * 2 + 1 * 12=
34.