タイトル説明
手紙そのようなことは計算にかかる時間などの電話のキーパッドに応じて入力モード:A、B、Cは、単に入力を押して最初の入力Cが三つの連続プレスを必要とし、「1」キーです。二つの連続する文字が同じキーでない場合は、あなたのような、直接押すことができます:KZ同じキー上の6 2かの連続した文字を押す必要があり、広告はダブル必要で、あなたは、二つのボタンの間にある程度の時間が必要になりますこうした交流として、aを押した後、あなたは、cを押してしばらく待つ必要があります。今たびに、それは2つの期間を待つのにかかる時間を一定の時間を費やす必要があるとします。今、文字の文字列を与え、我々はそれがするのにかかる時間を計算する必要があります。
説明を入力します。
、100を超えない長さの文字列をいくつかだけ電話キーパッド小文字の
出力説明:
入力データの各セット、必要な所定の時間入力文字列内の出力のために、データの複数のセットを含んでいてもよいです
例1
エントリー
ボブ WWW
輸出
7 7
問題解決のためのアイデア
この問題は、やることが良い見ていない、関係がアルファベット順に検索し、無駄に、数字キーを押ししようと始めました。
その後、直接数字キーのアルファベット順にリンクされている配列の添え字は、それが文字列を横断して、押されました。
あなたはまた、次の文字がボタンの押しで現在の文字ではないかを決定する必要があります。決意の方法を見ている 文字のシーケンス差分キー押下時間の差に等しいです。
1つの#include < 文字列・H> 2の#include <stdio.hの> 3の#include <STDLIB.H> 4 5 INT メイン() 6 { 7 チャー S [ 100 ]。 8 int型アレイ[ 26 ] = { 1、2、3、1、2、3、1、2、3、1、2、3、1、2、3、1、2、3、4、1、2、3、1、2、3、4 }。 9 一方(scanf関数(" %sの"、S)=!EOF) 10 { 11 int型のカウント=配列[S [ 0 ] - ' ' ]。 12 のために(int型 i = 1 ; iがSTRLEN(複数可)<Iは++ ) 13 { 14 +アレイをカウント=カウント[S [I] - ' ' ]。 15 であれば(S [i]を-s [I- 1 ] ==配列[S [i]は- ' ' ] -アレイ[S [I- 1 ] - [ A ' ]) 16 のカウント=カウント+ 2 。 17 } 18 のprintf(" %d個の\ n " 、カウント)。 19 } 20 }
概要
キートピックは、同じキーを押して上の文字を見つける方法です。
ダニエルはそれを他の人が賢いと思ったけど、問題はますます興味深くなってきた優れた燃料を磨くために、コードを見て!