http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=20079
题意:
给你一个电话号码,根据这个号码生成一个新的号码。生成的规则就是 新号码的第一个数任意选(0-9), 然后之后的每一个新号码都按照以下规则生成:
第i个新号码 = (第 i-1个新号码 +第i个老号码 的和)/2 , 这里如果乘除,则新号码i唯一,否则新号码i可以向上或向下取整;
求总共能生成多少种号码
q=第i+1位的老号码; j为第i位上的新号码
if ((q+j)%2==0)
dp[i][j]=dp[i+1][(q+j)/2];
else
dp[i][j]=dp[i+1][(q+j)/2]+dp[i+1][(q+j+1)/2];
如果发现老号码本身能得到 自己,那么种类数要减一 (求得是 生成的 新的号码数)
#include
#include
#include
#include
#include
#include
#include
#include