代码求调
查看原帖
代码求调
845989
zhengyuanzhi楼主2025/1/26 21:01

抽象代码4AC,4TLE,2WA 求调

#include<bits/stdc++.h>
using namespace std;
int a,b,l1;
int l[15];
int dp[15][15][2][2];
bool mem[15][15][2][2];
int dfs(int pos,int lst,bool lim,bool flag){
	if(pos==0) return 1;
	if(mem[pos][lst][lim][flag]) return dp[pos][lst][lim][flag];
	int ret=0;
	for(int i=0;i<=(lim?l[pos]:9);i++)
		if(flag || abs(i-lst)>1) ret+=dfs(pos-1,i,lim && (i==l[pos]),flag && (!i));
	mem[pos][lst][lim][flag]=1;
	return dp[pos][lst][lim][flag]=ret;
}
int caculate(int x){
	memset(dp,0,sizeof(dp));
	memset(mem,0,sizeof(mem));
	int i=1,len=1;
	for(;;len++,i*=10){
		if(i>x){
			i/=10;
			len--;
			l1=len;
			break;
		}
	}
	for(;i;len--,i/=10) l[len]=x%(i*10)/i;
	return dfs(l1,0,1,1);
}
int main(){
	cin>>a>>b;
	cout<<caculate(b)-caculate(a-1)<<endl;
	return 0;
}

感谢大佬 祝大佬RP++

2025/1/26 21:01
加载中...