到底是什么oj啊 根本交不了啊
谁帮我交下这题?
#include <iostream>
#include <cstring>
#include <string>
#include <cstdio>
#include <cmath>
#include <algorithm>
#include <vector>
#include <queue>
#include <map>
#define inf 0x3f3f3f3f
using namespace std;
int dp[15][15];
int solve(int n)
{
int l=0,num[15],ans=0,i,j;
while(n)
{
l++;
num[l]=n%10;
n/=10;
}
for(i=1;i<l;i++)
for(j=1;j<10;j++)//这里只能从1开始啊
ans+=dp[i][j];
for(i=l-1;i>0;i--)
{
for(j=0;j<num[i];j++)//这里0开始就可以
{
if(abs(num[i+1]-j)>=2)
ans+=dp[i][j];
}
}
return ans;
}
int main()
{
int i,j,k,a,b;
memset(dp,0,sizeof dp);
for(i=0;i<10;i++)
dp[1][i]=1;
for(i=2;i<=10;i++)
for(j=0;j<10;j++)
{
for(k=0;k<10;k++)
{
if(abs(j-k)>=2)
dp[i][j]+=dp[i-1][k];
}
}
while(~scanf("%d%d",&a,&b))
{
printf("%d\n",solve(b+1)-solve(a));
}
return 0;
}
原文:http://blog.csdn.net/u011032846/article/details/18605259