POJ-1426-Find The Multiple
2013-08-08 13:04
281 查看
这个题要求求出n的m倍都为0和1组成的数,进行BFS搜索,每次尝试去填1和0,只需要记录当前位置的余数,然后注意层数的剪枝。
也就是说我们枚举每一位的时候,只要当前位数的余数存在,那么再次出现当前一样的余数的情况就不用记录当前状态了。
仔细想想吧,模拟除法运算过程应该就能明白了
代码:
也就是说我们枚举每一位的时候,只要当前位数的余数存在,那么再次出现当前一样的余数的情况就不用记录当前状态了。
仔细想想吧,模拟除法运算过程应该就能明白了
代码:
#include<cstdio> #include<cstring> #include<iostream> using namespace std; const int maxn=10001; struct Node { char str[200]; int res; int len; int step; }q[maxn]; int n; bool vis[maxn]; int main() { while(scanf("%d",&n)&&n) { memset(vis,0,sizeof(vis)); int front=0,last=1,ans=-1,count=0; q[front].res=0; q[front].len=0; q[front].step=0; while(front<last) { int res=q[front].res; if(q[front].step!=count) { count=q[front].step; memset(vis,0,sizeof(vis)); } if(!vis[(res*10+1)%n]) { if((res*10+1)%n==0) { q[front].str[q[front].len++]='1'; q[front].str[q[front].len]='\0'; printf("%s\n",q[front].str); break; } vis[(res*10+1)%n]=1; q[last].res=(res*10+1)%n; q[last].step=q[front].step+1; memcpy(q[last].str,q[front].str,sizeof(q[front].str)); q[last].str[q[front].len]='1'; q[last].len=q[front].len+1; q[last].str[q[last].len]='\0'; last++; } if(res&&!vis[(res*10+0)%n]) { if((res*10+0)%n==0) { q[front].str[q[front].len++]='0'; q[front].str[q[front].len]='\0'; printf("%s\n",q[front].str); break; } vis[(res*10+0)%n]=1; q[last].res=(res*10+0)%n; q[last].step=q[front].step+1; memcpy(q[last].str,q[front].str,sizeof(q[front].str)); q[last].str[q[front].len]='0'; q[last].len=q[front].len+1; q[last].str[q[last].len]='\0'; last++; } front++; } } return 0; }
相关文章推荐
- POJ 1426 Find The Multiple
- Find The Multiple POJ - 1426 深搜
- Find The Multiple(POJ 1426)
- POJ-1426 (Find The Multiple) bfs
- POJ 1426 Find The Multiple——bfs + 模运算 + 打表
- 【搜索】【poj 1426】Find The Multiple
- POJ 1426 Find The Multiple
- POJ 1426 Find The Multiple --- BFS || DFS
- POJ 1426 Find The Multiple
- POJ Find The Multiple 1426 (搜索)
- POJ 1426 Find The Multiple (搜索)
- POJ 1426 Find The Multiple
- Poj 1426 Find The Multiple
- poj1426 - Find The Multiple [bfs 记录路径]
- poj 1426 Find The Multiple special judge BFS or Doubi mode
- Find The Multiple POJ - 1426
- POJ 1426 Find The Multiple【同余模定理+BFS||二叉树+鸽巢】
- POJ_1426_FindTheMultiple
- POJ-1426 Find The Multiple 解题报告
- POJ1426 Find the multiple