C++ 中的 4 键键盘

c++server side programmingprogramming

假设我们将尝试使用键盘输入字母"A"。我们的目标是仅使用四个键并尝试在文本字段中输入尽可能多的"A"。这些键是"A"、"C"、"V"和"Ctrl"。

要写入最大数量的 A,我们将使用 Ctrl + A 选择全部、Ctrl + C 复制和 Ctrl + V 粘贴。

因此,如果输入的击键次数是 7,则按 A 三次时输出将是 9。

然后 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

    • 对于 breakpoint := 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){ //使用 4 种类型的键查找"A"的数量
   if (keystrokes <= 6) //如果击键次数少于 7
      return keystrokes;
      int result[keystrokes]; //存储中间结果
      for (int n=1; n<=6; n++) //最多 6 次击键,我们需要该数量的击键才能达到最大值
         result[n-1] = n;
      for (int n=7; n<=keystrokes; n++){//对于第 7 个到更高的结果 result[n-1] = 0; //最初将 0 存储为结果
      for (int breakPoint=n-3; breakPoint>=1; breakPoint--){//找到要选择的断点,复制并粘贴
         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

相关文章