非常可乐 HDU1495

#include<iostream>
#include<algorithm>
#include<math.h> #include<stdlib.h> #include<string.h> #include<stdio.h> #include<ctype.h> #include<limits.h> #include<queue> #include<stack> using namespace std; #define max(a, b) a>b?a:b #define min(a, b) a<b?a:b #define N 110 typedef struct maze { int a, b, c, step; } MAZE; int s, n, m, visit[N][N][N]; void BFS(); int main() { while(scanf("%d%d%d", &s, &n, &m), s+n+m) { if(s%2!=0) printf("NO\n"); else BFS(); } return 0; } void BFS() { queue<MAZE>que; memset(visit, 0, sizeof(visit)); MAZE p, q; p.a=s; p.b=0; p.c=0; p.step=0; visit[p.a][p.b][p.c]=1; que.push(p); while(!que.empty()) { p=que.front(); que.pop(); if((p.a==p.b&&p.c==0)||(p.a==p.c&&p.b==0)||(p.b==p.c&&p.a==0)) { printf("%d\n", p.step); return; } q=p; if(p.a!=0) { if(p.a>n-p.b)//也就是说p.a还有剩余 { //q= (MAZE) {p.a-n+p.b, n, p.c, p.step+1}; q.a=p.a-n+p.b; q.b=n; q.c=p.c; q.step=p.step+1; } else 

转载于:https://www.cnblogs.com/wazqWAZQ1/p/4663393.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值