TopcoderArchive
SRM1 Jun 2005
SRM 245

Straights

Problem statement, definition, constraints, and public examples.

Problem Statement

You are playing a game of cards in which the number of straights, i.e., sets of consecutive-valued cards, determines the strength of your hand. You will be given a int[] hand, where the i-th element of hand is the number of cards of value i in your hand. You should return the number of straights of length k. For example, suppose you have the hand:
  • 2 of spades
  • 2 of diamonds
  • 2 of clubs
  • 3 of clubs
  • 4 of hearts
  • 4 of clubs
You would be given hand = { 0, 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0 }. The number of two-card straights is 5:
  • 2 of spades, 3 of clubs
  • 2 of diamonds, 3 of clubs
  • 2 of clubs, 3 of clubs
  • 3 of clubs, 4 of hearts
  • 3 of clubs, 4 of clubs

Definition

Class:
Straights
Method:
howMany
Parameters:
int[], int
Returns:
int
Method signature:
int howMany(int[] hand, int k)
(be sure your method is public)

Notes

  • Straights do not wrap around: if hand is {1,0,0,0,0,0,0,0,0,0,0,0,1}, you have no straights of length 2.

Constraints

  • hand will contain exactly 13 elements.
  • Each element of hand will be between 0 and 4 inclusive.
  • k will be between 1 and 13 inclusive.

Examples

  1. {0,3,1,2,0,0,0,0,0,0,0,0,0}
    2
    Returns: 5
    The example given.
  2. {1,1,1,1,1,1,1,1,1,1,1,1,1}
    5
    Returns: 9
    Say hand[0] references Aces. There are 9 ways to make a straight of length 5: Ace-Five up to Nine-King.
  3. {4,4,4,4,4,4,4,4,4,4,4,4,4}
    13
    Returns: 67108864
  4. {4,0,4,0,4,0,4,0,4,0,4,0,4}
    2
    Returns: 0
    Straights do not wrap around; we have no straights here.
  5. {1,2,3,4,1,2,3,4,1,2,3,4,1}
    1
    Returns: 31
Back to all problems