划分型动态规划 - 字符串解密问题
1.问题描述
有一段由A-Z组成的字母串信息被加密成数字串
加密方式为A->1,B->2,...,Z->26
给定加密后的字符串S[1...N-1],问有多少种方式解密成字母串
例子:
输入:
-12
输出:
-2(AB或L)
2.代码
//
// Created by Administrator on 2021/7/22.
//
#ifndef C__TEST01_STRINGDP_HPP
#define C__TEST01_STRINGDP_HPP
#include <vector>
/*
有一段由A-Z组成的字母串信息被加密成数字串
加密方式为A->1,B->2,...,Z->26
给定加密后的字符串S[1...N-1],问有多少种方式解密成字母串
例子:
输入:
- 12
输出:
- 2(AB或L)
*/
#include <vector>
class StringDP{
public:
StringDP(vector<int> charInputN);
int algorithmDP(vector<int> &charInput);
private:
vector<int> charInput;
};
StringDP::StringDP(vector<int> charInputN):
charInput(charInputN){
charInput.resize(charInputN.size());
}
int StringDP::algorithmDP(vector<int> &charInput){
if(charInput.size() == 0){
return 0;
}
vector<int> f;
f.resize(charInput.size()+1);
f[0] = 1; //Initilization,0 is the null
int temp;
for(int i = 1; i < f.size() ; ++i){
f[i] = 0;
if(0 < charInput[i-1] && charInput[i-1]<= 9) f[i] += f[i-1];
temp = charInput[i-2] * 10 + charInput[i-1];
if(10 <= temp && temp <= 26) f[i] += f[i-2];
}
return f[f.size() - 1];
}
#endif //C__TEST01_STRINGDP_HPP
main.cpp测试
#include <iostream>
using namespace std;
#include "StringDP.hpp"
int main() {
vector<int> ss = {1,2, 3};
StringDP sdp(ss);
cout << sdp.algorithmDP(ss) << endl;
return 0;
}
主要是给自己看的,所以肯定会出现很多错误哈哈哈哈哈
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律