poj1426(暴力dfs)
Posted frankchen831x
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了poj1426(暴力dfs)相关的知识,希望对你有一定的参考价值。
题目链接:https://vjudge.net/problem/POJ-1426
题意:给出n(1<=n<=200),求出全部由01组成的能整除n的正整数。
思路:此题在unsigned long long以内就可以找到满足条件的数,因此限制递归深度为20,然后枚举每一位两种可能即可。
AC代码:
#include<cstdio> #include<algorithm> using namespace std; int n,cnt,flag,res,ans[105]; void dfs(int pos,int pre){ if(pos>20) return; if(!pre){ flag=1; res=pos; return; } ans[pos]=0; dfs(pos+1,(pre*10+0)%n); if(flag) return; ans[pos]=1; dfs(pos+1,(pre*10+1)%n); } int main(){ while(~scanf("%d",&n),n){ flag=0; ans[1]=1; dfs(2,1%n); for(int i=1;i<res;++i) printf("%d",ans[i]); printf(" "); } return 0; }
以上是关于poj1426(暴力dfs)的主要内容,如果未能解决你的问题,请参考以下文章
poj1426 Find The Multiple (DFS)
POJ1426-Find The Multiple(BFS||DFS)
POJ 1426 Find The Multiple(DFS,BFS)
POJ1426-Find The Multiple(DFS)