到底是什么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