本文主要是介绍uestc 1307 windy数 --- 数位DP,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
到底是什么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;
}
这篇关于uestc 1307 windy数 --- 数位DP的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!