输入的最小按键次数
题目:http://acm.hdu.edu.cn/showproblem.php?pid=2577
用动态规划角。
on[i]表示在lock为开的时候输入第i个字符时的最小按键次数。
off[i]表示在lock为关的时候输入第i个字符时的最小按键次数。
View Code
#include "iostream" #include "string" using namespace std; #define MAX 105 int on[MAX], off[MAX]; int main(){ int n; string str; cin>>n; while(n--){ on[0] = 1; off[0] = 0; cin>>str; int len = str.length(); for(int i=0; i<len; i++){ if(islower(str[i])){//小写,保证小写,保证状态相符 on[i+1]=min(on[i]+2, off[i]+2); off[i+1]=min(on[i]+2, off[i]+1); }else{ on[i+1]=min(on[i]+1, off[i]+2); off[i+1]=min(on[i]+2, off[i]+2); } } cout<<min(on[len]+1, off[len])<<endl; } }
posted on 2012-05-13 23:03 More study needed. 阅读(330) 评论(0) 编辑 收藏 举报