给一串数字,变成对应字母序列,dp

#include<iostream>
#include<vector>
#include<string>
using namespace std;
int numOfDecoding(string s,int len)
{
	if(!len || s[0]=='0')
		return 0;
	vector<int> nums(len,0);
	nums[0]=1;
	if(s[1]=='0'&& s[0]<='2')
		nums[1]=1;
	else if(s[0]=='1' ||(s[0]=='2'&& s[1]<='6'))
		nums[1]=2;
	else if(s[1]=='0')
		nums[1]=0;
	else
		nums[1]=1;
	for(int i=2;i<len;i++)
	{
		if(s[i]=='0' && s[i-1]<='2' && s[i-1]>'0')
			nums[i]=nums[i-2];
		else if(s[i-1]=='1' ||(s[i-1]=='2' && s[i-1]<='6'))
			nums[i]=nums[i-1]+nums[i-2];
		else if(s[i]=='0')
			nums[i]=0;
		else
			nums[i]=nums[i-1];
	}
	return nums[len-1];
}
int main()
{
	string s;
	while(cin>>s)
	{
		int len=s.length();
		cout<<numOfDecoding(s,len);
	}
	return 0;
 } 

全部评论

相关推荐

Java大菜狗:纯纯招黑奴,一天还不到两百那么多要求,还不迟到早退,以为啥啊,给一点工资做一堆活,还以不拖欠员工工资为荣,这是什么值得骄傲的事情吗,纯纯***公司
点赞 评论 收藏
分享
07-14 12:22
门头沟学院 Java
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务