How to print maximum number of A’s using given four keys

Data StructureAlgorithmsDynamic Programming

Let us consider, we will try to write the letter ‘A’, using the keyboard. Our goal is to use only four keys and try to write maximum ‘A’s on the text field. The keys are ‘A’, ‘C’, ‘V’ and ‘Ctrl’.

To write the maximum number of A, we will use Ctrl + A to select All, Ctrl + C to copy and Ctrl + V to paste.

Input and Output

Input:
Number of keystrokes, say 7
Output:
Maximum Number of A's with 7 keystrokes is: 9
Press A three times. Then Ctrl+A, Ctrl+C, Ctrl+V, Ctrl+V

Algorithm

keyNumbers(keyStrokes)

Input: number of keystrokes.

Output: Maximum number of letters using these keystrokes.

Begin
   if keyStrokes <= 6, then
      return keyStrokes

   for n := 1 to 6, do
      result[n-1] := n
   done

   for n := 7 to keyStrokes, do
      result[n-1] := 0
      for breakpoint := n-3 down to 1, do
         curr := (n – breakpoint - 1)*result[breakpoint - 1]
         if curr > result[n-1], then
            result[n - 1] := curr
      done
   done
   result[keyStrokes - 1]
End

Example

#include<iostream>
using namespace std;

int keyNumbers(int keystrokes) {    //find number of 'A's using 4 types of keys
   if (keystrokes <= 6)    //if keystrokes are less than 7
      return keystrokes;

   int result[keystrokes];    //store intermediate results
   for (int n=1; n<=6; n++)    //upto 6 keystrokes, we need that number of keystrokes for max
      result[n-1] = n;

   for (int n=7; n<=keystrokes; n++) {    //for 7th to higher
      result[n-1] = 0;    //initially store 0 as result
      for (int breakPoint=n-3; breakPoint>=1; breakPoint--) {    //find breakpoint to select, copy and paste
         int curr = (n-breakPoint-1)*result[breakPoint-1];
         if (curr > result[n-1])
            result[n-1] = curr;
      }
   }
   return result[keystrokes-1];
}

int main() {
   int keystrokes;
   cout << "Enter Number of keystrokes: "; cin >> keystrokes;
   cout << "Maximum Number of A's with "<<keystrokes << " keystrokes is: "<< keyNumbers(keystrokes)<<endl;
}

Output

Enter Number of keystrokes: 7
Maximum Number of A's with 7 keystrokes is: 9
raja
Updated on 16-Jun-2020 15:47:10

Advertisements