POJ 1465 Multiple BFS

来源:互联网 发布:龙霸点歌机网络加歌 编辑:程序博客网 时间:2024/05/01 07:09

上来一看只会暴力,网上看了看资料,知道了还有一个剪枝

假设A,B对于X的余数相同

那么 (10*A+d[i])%x  =(10*B+d[i])%x所以只有当余数没出现过的情况下才加入到搜索的队列中来

另外还有一个问题,就是可能是最后的答案出现很庞大的位数,所以要用指针,这里我是用数组模拟。

还有就是单独处理N=0的情况 ,RE了好几次

#include<cstdio>#include<stdlib.h>#include<queue>#include<cstring>#define INF 1000000000using namespace std;int n,m,d[150];struct point{int yu;int pre;int now;}que[10000];int cmp(const void * a,const void * b){int * aa=(int *)a;int * bb=(int *)b;return *aa-*bb;}void print(int tem){if(que[tem].pre!=-1){print(que[tem].pre);printf("%d",que[tem].now);}}int bfs(){int front=0,rear=0;int flag[5010];que[rear].now=0;que[rear].pre=-1;que[rear++].yu=0;memset(flag,0,sizeof(flag));while(front<rear){struct point tem;tem=que[front];for(int i=0;i<m;i++){int temp=(tem.yu*10+d[i])%n;if(!flag[temp] && (tem.pre!=-1 || d[i]>0)){struct point st;st.now=d[i];st.yu=temp;st.pre=front;flag[temp]=1;que[rear++]=st;if(temp==0){print(rear-1);printf("\n");return 1;}}}front++;}return 0;}int main(){int i;while(scanf("%d",&n)!=EOF){scanf("%d",&m);for(i=0;i<m;i++)scanf("%d",&d[i]);qsort(d,m,sizeof(d[0]),cmp);if(n==0){printf("0\n");}else if(!bfs())printf("0\n");}}


 

 

 

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 同事能力比你强怎么办 新买的木板床响怎么办 笔记本键盘驱动坏了怎么办 云柜快递超时了怎么办 毕业设计被老师发现抄的怎么办 地板颜色太深了怎么办 皮质鞋子破皮了怎么办 吃了蜘蛛丝会怎么办 南京高二分班不公平怎么办? 高中分班考试没考好怎么办 实木门上的伸缩缝太深怎么办 mac点关机没反应怎么办 被压倒扁的易拉罐怎么办 白色车漏底漆了怎么办 客厅对着卧室门怎么办 老公不上进还懒怎么办 二胡按弦手指分不开怎么办 酷塑做完后疼痛怎么办 冷冻治疗后水泡破了怎么办 冷冻治疗的水泡破了怎么办? 冷冻治疗水泡破了怎么办 脚上冷冻后起泡怎么办 刺猴冷冻后起泡怎么办 隔壁太吵怎么办阴招 楼上有小孩太吵怎么办 捷达小水管睹了怎么办 楼房下水管冻了怎么办 一楼地面很潮湿怎么办 新房子地面有裂缝怎么办 地砖下面的下水管漏水怎么办 速冻饺子冻在一起了怎么办 牛排泡水解冻了怎么办 饺子都粘一起了怎么办 把桃子放冷冻了怎么办 抖音小视频连不上网怎么办 网络视频连不上网怎么办 苹果8视频不清晰怎么办 乳疮腐烂还臭怎么办 冰箱肉腐烂很臭怎么办 指环扣松了怎么办视频 奇迹mu端游杀人了怎么办