划分型动态规划 - 字符串解密问题
时间:2021-07-25
本文章向大家介绍划分型动态规划 - 字符串解密问题,主要包括划分型动态规划 - 字符串解密问题使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
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;
}
主要是给自己看的,所以肯定会出现很多错误哈哈哈哈哈
原文地址:https://www.cnblogs.com/yoshinb/p/15058532.html
- Java多线程详解3
- SpringMVC处理multipart请求.
- 一条简单的sql语句运行15天的原因分析(r5笔记第17天)
- 巧用flashback database实现灵活的数据回滚(r5笔记第16天)
- Spring Cache For Redis.
- css重写checkbox样式
- 通过shell脚本同时监控多个数据库负载(r5笔记第14天)
- Java 定时器 Timer 的使用.
- 通过shell脚本来统计段大小(r5笔记第14天)
- Linux下配置MySQL主从复制(r5笔记第13天)
- Final 关键字
- ArrayList 和 LinkedList的执行效率比较
- 关于consistent gets(r5笔记第12天)
- wait/notify 实现多线程交叉备份
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Android实现两个数相加功能
- 基于Android studio3.6的JNI教程之ncnn之语义分割ENet
- android计算器实现两位数的加减乘除
- android studio实现简单考试应用程序实例代码详解
- Kotlin 实现按钮点击跳转监听事件方式
- Android使用剪切板传递数据
- kotlin anko页面跳转实现方式,携带参数或flag
- 关于android连续点击出现多个Activity界面的解决方法
- Android Studio使用recyclerview实现展开和折叠功能(在之前的微信页面基础之上)
- 解决django 多个APP时 static文件的问题
- Android Studio如何获取SQLite数据并显示到ListView上
- Android自定义短信倒计时view流程分析
- 使用Android studio3.6的java api方式调用opencv
- thinkphp5 + ajax 使用formdata提交数据(包括文件上传) 后台返回json完整实例
- php+iframe 实现上传文件功能示例