C++ 中的 4 鍵鍵盤


假設我們要嘗試使用鍵盤輸入字母“A”。我們的目標是隻使用四個鍵並嘗試在文字欄位中輸入儘可能多的“A”。這四個鍵是“A”,“C”,“V”和“Ctrl”。

為了輸入最大數量的 A,我們將使用 Ctrl + A 選擇全部,Ctrl + C 複製,以及 Ctrl + V 貼上。

因此,如果輸入是按鍵次數為 7,則輸出將為 9,因為按了三次 A。

然後 Ctrl+A、Ctrl+C、Ctrl+V、Ctrl+V

為了解決這個問題,我們將遵循以下步驟:

  • 如果 keyStrokes <= 6,則

    • 返回 keyStrokes

  • 對於 n := 1 到 6,執行

    • result[n-1] := n

  • 對於 n := 7 到 keyStrokes,執行

    • result[n-1] := 0

    • 對於斷點 := n-3 到 1,執行

      • curr := (n – breakpoint - 1)*result[breakpoint - 1]

      • 如果 curr > result[n-1],則

        • result[n - 1] := curr

  • result[keyStrokes - 1]

示例

讓我們看看以下實現,以便更好地理解:

即時演示

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

輸入

7

輸出

Enter Number of keystrokes: Maximum Number of A's with 0 keystrokes is: 0

更新於: 2020-11-16

874 次瀏覽

開啟你的 職業生涯

完成課程獲得認證

立即開始
廣告