博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hdu - 1226 超级密码 (bfs)
阅读量:5210 次
发布时间:2019-06-14

本文共 1894 字,大约阅读时间需要 6 分钟。

http://acm.hdu.edu.cn/showproblem.php?pid=1226

难以想到怎么去bfs,还是对状态的划分不明确,知道了之后感觉还是挺简单的。

这题关键是密码可能很长,然后判断是否整除用到了一点技巧,确保不会溢出,输出的时候是用递归回溯输出。

因为同一个数可以取多次,而最终取的是数值最小的,故输入之后从小到大排序,然后从第一个数到最后一个数每次添加一遍,直到找到合适的为止.

为了便于输出用了数组模拟队列.

1 #include 
2 #include
3 #include
4 #include
5 using namespace std; 6 struct point 7 { 8 int mod; 9 int digit;10 int pre;11 int step;12 }Queue[5001],init={
0,0,-1};13 int n,c,m;14 int num[20];15 int used[5010];16 17 void echo(int x)18 {19 if(Queue[x].pre==-1) return;20 else echo(Queue[x].pre);21 if(Queue[x].digit>=0&&Queue[x].digit<=9) printf("%c",Queue[x].digit+'0');22 else printf("%c",Queue[x].digit+'A'-10);23 }24 void bfs()25 {26 memset(used,0,sizeof(used));27 int front=0,rear=1;28 bool flag=0;29 Queue[0]=init;30 while(front!=rear)31 {32 point e=Queue[front];33 for(int i=0;i
=500) continue;38 used[ans]=1;39 Queue[rear].pre=front;40 Queue[rear].digit=num[i];41 Queue[rear].mod=ans;42 Queue[rear].step=e.step+1;43 if(ans==0) {echo(rear);printf("\n");flag=1;break;}44 rear++;45 }46 front++;47 }48 if(!flag) printf("give me the bomb please\n");49 }50 int main()51 {52 freopen("a.txt","r",stdin);53 int t;54 char str[20];55 scanf("%d",&t);56 while(t--)57 {58 scanf("%d%d%d",&n,&c,&m);59 getchar();60 for(int i=0;i
='0'&&str[0]<='9') num[i]=str[0]-'0';64 else num[i]=10+str[0]-'A';65 // printf("%d\n",num[i]);66 }67 sort(num,num+m);68 if(n==0)69 {70 if(num[0]==0) printf("0\n");71 else printf("give me the bomb please\n");72 }73 else bfs();74 }75 return 0;76 }

 

转载于:https://www.cnblogs.com/nowandforever/p/4539439.html

你可能感兴趣的文章
vue路由跳转时更改页面title
查看>>
NodeJS怎么实现WebSocket功能
查看>>
vue:axios二次封装,接口统一存放
查看>>
Js三大特性--封装、继承以及多态
查看>>
2019年8月2日07:51:10 马上要撤
查看>>
vue中router与route的区别
查看>>
js 时间对象方法
查看>>
ES5和es6的封装继承
查看>>
call和apply区别
查看>>
Vue2路由鉴权
查看>>
网络请求返回HTTP状态码(404,400,500)
查看>>
用 async/await 来处理异步
查看>>
CSS3实现0.5像素边框
查看>>
koa2 允许跨域
查看>>
小程序处理富文本路径
查看>>
饿了么ui 省市区 三级联动框架
查看>>
NodeJs 实现简单WebSocket 即时通讯
查看>>
AMD 和 CMD 的区别有哪些?
查看>>
微信小程序获取formid
查看>>
js中import和require的区别
查看>>