/* 解题方法: 动态规划--多态问题 shy:由y+sh组成 sh:由h+s组成 求s有多少 s[i]:表示[0, i]区间有多少个 sh[i]:表示[0,i]区间有多少个 shy[i]:表示[0,i]区间有多少个shy */ #include <iostream> (30316)#include <string> #include <vector> using namespace std; int main() { long long n; cin >> n; string str; cin >> str; //1.创建dp表 vector<long long> s(n + 1); auto h = s; auto y = h; //2.填表 for (int i = 1;i <= n;i++) { //求s s[i] = str[i - 1] == 's' ? s[i - 1] + 1 : s[i - 1]; //求sh h[i] = str[i - 1] == 'h' ? h[i - 1] + s[i - 1] : h[i - 1]; //求shy y[i] = str[i - 1] == 'y' ? y[i - 1] + h[i - 1] : y[i - 1]; //cout<<s[i]<<" "<<h[i]<<" "<<y[i]<<endl; } cout << y[n] << endl; } // 64 位输出请用 printf("%lld")

相关推荐

11-13 20:16
已编辑
厦门理工学院 软件测试
专业嗎喽:硕佬,把学校背景放后面几段,学校背景双非还学院,让人看了就不想往下看。 把实习经历和个人奖项放前面,用数字化简述自己实习的成果和掌握的技能,比如负责项目一次通过率90%,曾4次发现项目潜在问题风险为公司减少损失等等
点赞 评论 收藏
分享
牛客网
牛客网在线编程
牛客网题解
牛客企业服务