llllmz

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

经典算法题之手机键盘

这题出的只能说是无语。思路还是很简单的。

只要用一个的tag标记上次是哪个按键即可,然后tag和现在对比,要是相同就多加2。

#include<iostream>
#include <map>
using namespace std;
int main(){
map<char,int>Map={
{'a',10},{'b',20},{'c',30},
{'d',11},{'e',21},{'f',31},
{'g',12},{'h',22},{'i',32},
{'j',13},{'k',23},{'l',33},
{'m',14},{'n',24},{'o',34},
{'p',15},{'q',25},{'r',35},{'s',45},
{'t',16},{'u',26},{'v',36},
{'w',17},{'x',27},{'y',37},{'z',47}
};
char c[101]={'\0'};
while( cin >> c ) {
int tag = -1 ;
int i = 0 ;
int sum = 0 ;
while( c[i] != '\0' ) {
int x = Map[ c[i] ] / 10;
int y = Map[ c[i] ] % 10;
sum += x;
if (tag == y) {
sum += 2;
}
tag=y;
i++;
}
cout << sum <<'\n' ;
}
return 0;
}

结果如下:

 

posted on   神奇的萝卜丝  阅读(18)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
点击右上角即可分享
微信分享提示