C ++中的4键键盘

假设我们将尝试使用键盘写字母“ 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,则

    • 返回键

  • 对于n:= 1至6

    • 结果[n-1]:= n

  • 对于n:= 7到keyStrokes

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

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

    • result [n-1]:= curr

    • 结果[n-1]:= 0

    • 对于断点:= n-3降至1,

    • 结果[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++){ //for 7th to higher 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