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