zoukankan      html  css  js  c++  java
  • Alphacode

    【原题链接】

    【题意说明】

    字符编码问题:把字母A→1、B →2……Z→26进行编码,现在有一串编码,求有多少种可能的串可以得到这个编码?

    【问题分析】

     从最后一个字符向前推,显然对于只有一个数字的编码,只有一种串数为1,对于0个编码,对应为空串,数值也为1。

    对于第i个位置:

    (1)若它为0,则不处理,直接处理前面一个;

    (2)1° 它本身这个数对应一个字母,则此种情况它的串数对应于第i+1位置上的串数;

           2° 若它能与后面一个数组成的数,对应一个字母,则此种情况它的串数对应于第i+2位置上的串数。

    所以,可以看出,当前位置只与后面两个位置有关,这样我们就可以用两个数来保存所需要的数即可。

    递推式为:a=b+g(i,i+1)*c。这里的g(i,i+1)表示第i位置与i+1位置能否组成合法的数,若能则g(i,i+1)的值为1,否则为0。

    这里需要注意的是:当第j位0时,则它一定与第j-1构成一个数,并且要把第j、j-1看成一个数来处理,即10或20。

    如1101这个数,它只有一种方案:AJA,不能把第一个1与第二个1组合成一起!

    事实上在处理时,我们可以用一个变量y来保存前一个位置的值,若检查到y为0,则把y的值设为:当前的值*10,并且不处理当前位置,直接去处理前面的位置。

     

  • 相关阅读:
    java语言基础--标识符、关键字
    #考研碎碎念#3
    #考研笔记#计算机之word问题
    #考研#计算机文化知识1(局域网及网络互联)
    #学习笔记#jsp
    #学习笔记#JSP数据交互
    考研随笔2
    考研随笔1
    几个人
    全局变量
  • 原文地址:https://www.cnblogs.com/ahmasoi/p/2764509.html
Copyright © 2011-2022 走看看