dp的题爆搜过了???
查看原帖
dp的题爆搜过了???
428889
Xile楼主2023/9/8 19:16

记录

#include<bits/stdc++.h>
using namespace std;

int a,b;
int f[20][20],num[15];

inline int dfs(int now,int last,bool zero,bool maxx){
	if(now==0) return 1;
//	if(f[now][last]!=-1&&!zero&&!maxx) return f[now][last];
	int ans=0,maxn=maxx?num[now]:9,p;
	for(int i=0;i<=maxn;i++){
		if(abs(i-last)<2) continue;
		p=i;
		if(zero&&i==0) p=-10;
		ans+=dfs(now-1,p,(i==0)&&zero,maxx&&(i==maxn));
	}
//	if(!zero&&!maxx) f[now][last]=ans;
	return ans;
}

inline int solve(int x){
	memset(num,0,sizeof(0));
	int len=0;
	memset(f,-1,sizeof(f));
	while(x) num[++len]=x%10,x/=10;
	return dfs(len,-10,1,1);
}

int main(){
	scanf("%d%d",&a,&b);
	printf("%d",solve(b)-solve(a-1));
	return 0;
}
2023/9/8 19:16
加载中...