DFS之一

//poj  1426 Find The Multiple 
#include<iostream> //求1个10进制数,只能由1或0组成,能整除n
using namespace std;
int n,flag;
int num[200]={1};
int mod(int len)
{
int s=0;
for(int i=0;i<=len;++i)
{
s
=s*10+num[i];
if(s>=n)
s
%=n;
}
return s;
}
void dfs(int len)
{
if(len>99)
return;
num[len]
=1;
if(mod(len)==0)
{
for(int i=0;i<=len;++i)
printf(
"%d",num[i]);
printf(
"\n");
flag
=1;
return;
}
num[len]
=0;
if(mod(len)==0)
{
for(int i=0;i<=len;++i)
printf(
"%d",num[i]);
printf(
"\n");
flag
=1;
return;
}
num[len]
=1;
dfs(len
+1);
if(flag==1)
return;
num[len]
=0;
dfs(len
+1);
}
int main()
{
while(cin>>n&&n)
{
flag
=0;
dfs(
1);
}
return 0;
}

  

posted on 2011-08-22 12:07  sysu_mjc  阅读(137)  评论(0编辑  收藏  举报

导航