【c++赛码网编程题 |
您所在的位置:网站首页 › 2597大写 › 【c++赛码网编程题 |
样例输出
题目描述 小明很喜欢打字,今天小红给了小明一个字符串。这个字符串只包含大写和小写字母。 我们知道,按下CapsLock键,可以切换大小写模式。我们在小写模式时候,同时按下shift+字母键,就能写出大写字母。在大写模式的时候,按下shift+字母键,就能写出小写字母。现在问题来了,给你一个字符串,问你最少使用多少个按键,就可以写出这个字符串呢?注意,按shift和字母键,算两次按键。开始时均为小写状态。 输入描述 第一行一个T,表示有T组输入。 接下来T组数据: 每组数据一个字符串s,s的长度小于等于100。仅包含大小写字母。 输出描述 对于每组数据,输出最少按键次数。样例输入 3 A AA AAAAAA样例输出 2 3 7
解题思路 用变量small表示键入当前字符后并保持输入状态为小写字母,所需的最小次数。若当前字符为大写,则新的small应从(旧的small + 1次shift键 + 1次字母键)和(旧的big + 1次CapsLock键 + 1次字母键)中取较小值。其他情况依次类推。 用变量big表示键入当前字符后并保持输入状态为大写字母,所需的最小次数。 #include #include using namespace std; int main(){ int n; cin>>n; vector data; for(int i=0; i>str; int len = str.size(); int small = 0,big=1; for(int j =0;j='A'&&c |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |