DFS+强力剪枝
伤不起呀 自己写怎么都写不出来 最后还看开了别人的解题报告
思维能力还是不够呀
推荐解题报告:
代码及其注释:
#include#include #include #include #include #include #include #include using namespace std;const int N=105;char s[N];int a[N];int change[N][10005];//表示 区间0~i 模为j 改变多少数是无解的int K;int n;int mod[N][10];//从0位开始 第i位为 j 时对K取得模int dpmod(int x,int k){ if(mod[x][k]!=-1) return mod[x][k]; if(x==0) { mod[x][k]=k%K; return mod[x][k]; } mod[x][k]=(dpmod(x-1,k)*10)%K; return mod[x][k];}int findmod()//求当前数组对K的模{ int m=0; for(int i=0;i x+1)//关键剪枝 return false; for(int i=x;i>=0;--i)//找小的 从高位到低位 { for(int j=(i =0;--i) printf("%d",a[i]); printf("\n"); } return 0;}