在线网站优化公司,多多进宝怎么推广赚钱,域名怎么做网站,平面设计培训课程学校描述 Alice和Bob之间要进行秘密通信#xff0c;他们正在讨论如何对信息进行加密#xff1a; Alice#xff1a;“不如采用一种很简单的加密方式#xff1a;’A’替换成1#xff0c;’B’替换成2#xff0c;„„#xff0c;’Z’替换成26。” Bob#xff1a;“这种加密方…描述 Alice和Bob之间要进行秘密通信他们正在讨论如何对信息进行加密 Alice“不如采用一种很简单的加密方式’A’替换成1’B’替换成2„„’Z’替换成26。” Bob“这种加密方式太傻了Alice。如果我想要传送一个单词’BEAN’给你它加密后就是25114。但你有很多种不同的方法来解密从而得到许多单词” Alice“你说的是没错但是除了’BEAN’有意义以外其他解密出来的’BEAAD’、 ’YAAD’、’YAN’、’YKD’和’BEKD’都没有任何含义。” Bob“是的但是同一个加密后的数字序列可能的得到数以亿计的不同解密方案。” Alice“是吗有这么多吗” 你要帮助Bob编写一个程序来说服Alice。对于一个加密后的数字序列告诉她确切的解密方案数。 输入 有若干个加密后的数字序列每行一个行数不超过10每行的数字数量不超过10000个。序列一定是符合要求的例如没有先导的零和连续两个零等情况。数字间没有空格。一行一个零表示输入结束这是不需要处理的。 输出 对于每个加密后的数字序列输出一行。一个整数表示解密的不同方案数。结果保证在32-bit带符号整数longint范围内。 输入样例 1 25114
1111111111
3333333333
0 输出样例 1 6
89
1很容易想到用dp做 但是我忽略了0 打好了交上去也全是wa。。只要在原dp加上0即可 #includecstdio
#includecstring
#includestring
#includealgorithm
#includecstring
#includeiostream
using namespace std;
//input
#define RI(n) scanf(%d,(n))
#define RII(n,m) scanf(%d%d,n,m);
#define RIII(n,m,k) scanf(%d%d%d,n,m,k)
#define RS(s) scanf(%s,s)
#define LL long long
#define REP(i,N) for(int i0;i(N);i)
#define CLR(A,v) memset(A,v,sizeof A)
//
#define N 100005
char a[N];
int dp[N];
int main()
{while(RS(a1),a[1]-0){CLR(dp,0);dp[0]dp[1]1;for(int i2;a[i];i){if(a[i]-0!0)dp[i]dp[i-1];if( (a[i-1]-0)*10a[i]-026a[i-1]-0!0 )dp[i]dp[i-2];}printf(%d\n,dp[strlen(a1)]);}
} 转载于:https://www.cnblogs.com/bxd123/p/10500342.html