I run a small NCAA office pool website where folks make predictions about the outcome of each game in a 64-team tournament that consists of six, single elimination rounds. Each correct prediction is worth a standard amount of points, and you compete in leagues against friends and colleagues.

I would like to add a feature that calculates, at any given time during the tournament, the probability of your bracket winning your league. For example, your bracket may have a good chance to score well if you select all of the top teams, but if one of them gets beat in an early round, your chances take a big hit.

To make things a little easier, I have already calculated each team's chances of winning against every other team in the tournament. This can sit as a lookup table to increase the speed of the code.

From here though, my attempts are brute force. I currently step through every bracket combination (2^(N-1), where N is the number of teams remaining in the tournament), calculate the odds of that particular combination occurring (based on the lookup table described above), then determine which bracket would win the league if that combination actually happened. This works fairly well once there are only 16 teams remaining, but in the early rounds, this method is far too taxing on computational power. Any ideas on how to more efficiently determine this probability would be greatly appreciated!