Computer >> 컴퓨터 >  >> 프로그램 작성 >> 프로그램 작성

주어진 4개의 키를 사용하여 A의 최대 수를 인쇄하는 방법


키보드를 사용하여 문자 'A'를 작성해 보겠습니다. 우리의 목표는 4개의 키만 사용하고 텍스트 필드에 최대 'A'를 쓰는 것입니다. 키는 'A', 'C', 'V' 및 'Ctrl'입니다.

A의 최대 개수를 쓰려면 Ctrl + A를 사용하여 모두를 선택하고 Ctrl + C를 사용하여 복사하고 Ctrl + V를 사용하여 붙여넣습니다.

입력 및 출력

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

알고리즘

keyNumbers(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

예시

#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;
}

출력

Enter Number of keystrokes: 7
Maximum Number of A's with 7 keystrokes is: 9