POJ 1465
来源:互联网 发布:淘宝店铺首页大图图片 编辑:程序博客网 时间:2024/06/05 14:24
BFS可解此题,但是必须要剪枝,考虑一个问题:A%N=R 设A=n*N+R那么(A*10+Ki)%N=(N*n*10+R*10+Ki)%N=(R*10+Ki)%N我们可以发现这个数值只和R与Ki有关所以我们先排序然后以一个数组记录余数,第二次出现这个余数的时候和前面出现这个余数的那种情况进行想同变换必定可以得出相同的结果,但是我们只要最小的那个,所以后面出现了相同余数的统统舍去即可。
#include<stdio.h>#include<string.h>#include<algorithm>#include<iostream>using namespace std;int judge[5010];struct ans{ int num; int yu; int w;}q[5010];int date[5010];void print(ans p){ if(p.w!=-1) print(q[p.w]); if(p.w!=-1) printf("%d",p.num);}int main(){ int n,m; while(cin>>m){ cin>>n; //printf("yes"); for(int i=0;i<n;i++) cin>>date[i]; if(m==0){ printf("0\n"); continue; } //printf("yes"); sort(date,date+n); //printf("yes"); memset(judge,0,sizeof(judge)); q[0].yu=0; q[0].num=0; q[0].w=-1; int l,f,yes; f=0; l=1; yes=0; while(f<l){ //printf("yes"); ans now=q[f]; ans p; int ys; for(int i=0;i<n;i++){ ys=(10*now.yu+date[i])%m; if(judge[ys]==0&&(now.w!=-1||date[i]!=0)){ p.yu=ys; p.num=date[i]; p.w=f; judge[ys]=1; q[l++]=p; if(ys==0){ print(p); printf("\n"); yes=1; break; } } } f++; if(yes==1) break; } if(yes==0){ printf("0\n"); } } return 0;}
0 0
- poj 1465
- poj 1465
- POJ 1465
- POJ 1465 Multiple
- POJ 1465 Multiple BFS
- POJ-1465-Multiple
- poj 1465 Multiple (BFS)
- POJ 1465 Multiple
- poj 1465 (BFS+剪枝)
- POJ 1465 Multiple
- POJ-1465 Multiple
- poj 1465 Multiple
- POJ 1465 Multiple
- POJ 1465 Multiple
- POJ-1465 Multiple
- poj 1465 Multiple
- POJ
- poj
- win8下 eclipse + python环境搭建
- operator new和operator delete学习
- AMD发布APPML源码,构建clMath库
- 搭建Repo服务器
- OpenCL 2.0发布,带来更强悍的异构计算能力
- POJ 1465
- Hadoop+GPU强强联手的性能探索
- oralce 启动时 报 ORA-00119 ORA-00132 错误
- 程序缘 Flex AIR之旅 --第三章开始编写AIR工程
- 枚举enum与typedef enum的区别
- protel 过孔(VIA), 焊盘(pad),钻孔区别
- LINUX下的C++编译器GCC简介
- 奇思妙想之开篇
- OpenCL(CUDA5.0) + Visual Studio 2010 环境配置