BFS题

一共有六种状态转移 一一枚举就好 设置一个标记数组。 用二重循环可以很清晰的解决代码长的问题

#include<cstdio>
#include<cstring>
#include<queue>
using namespace std;
int v[];
int sign[][][];
struct cup//记录遍历中3个水杯容藏可乐情况
{
int v[];
int step;
}temp; void pour(int a,int b)//倒水函数,把a杯子中的可乐倒到b杯子中
{
int sum=temp.v[a]+temp.v[b];
if(sum>=v[b])
temp.v[b]=v[b];
else
temp.v[b]=sum;
temp.v[a]=sum-temp.v[b];
} void bfs()
{
int i,j;
queue<cup>q;
cup cnt;
cnt.v[]=v[];
cnt.v[]=;
cnt.v[]=;
cnt.step=;
q.push(cnt);
memset(sign,,sizeof(sign));
sign[v[]][][]=;
while(!q.empty())
{
cnt=q.front();
q.pop();
if(cnt.v[]==cnt.v[]&&cnt.v[]==)
{
printf("%d\n",cnt.step);
return ;
} for(i=;i<;++i)
{
for(j=;j<;++j)
{
if(i!=j)//自己不倒水给自己
{
temp=cnt;//每个水位情况都要把所有操作枚举一遍,所以都要赋值为原始水位情况
pour(i,j);
if(!sign[temp.v[]][temp.v[]][temp.v[]])
{
temp.step++;
q.push(temp);
sign[temp.v[]][temp.v[]][temp.v[]]=;
}
}
}
}
}
printf("NO\n");
} int main()
{
while(scanf("%d%d%d",&v[],&v[],&v[])&&v[]||v[]||v[])
{
if(v[]>v[])
{
int t=v[];
v[]=v[];
v[]=t;
}
bfs();
}
return ;
}

非常可乐 HDU1495的更多相关文章

  1. HDU-1495 非常可乐(BFS)

    广搜的灵活应用题: 非常可乐 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) T ...

  2. 非常可乐(杭电hdu1495)bfs

      非常可乐 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Sub ...

  3. HDU1495 非常可乐 —— BFS + 模拟

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1495 非常可乐 Time Limit: 2000/1000 MS (Java/Others)    M ...

  4. HDU1495 非常可乐

    解题思路:简单的宽搜,见代码: #include<cstdio> #include<cstring> #include<algorithm> #include< ...

  5. HDU-1495 非常可乐 (嵌套结构体-广搜 对比 一般广搜)

    题意 大家一定觉的运动以后喝可乐是一件很惬意的事情,但是seeyou却不这么认为.因为每次当seeyou买了可乐以后,阿牛就要求和seeyou一起分享这一瓶可乐,而且一定要喝的和seeyou一样多.但 ...

  6. HDU1495 非常可乐(BFS/数论)

    大家一定觉的运动以后喝可乐是一件很惬意的事情,但是seeyou却不这么认为.因为每次当seeyou买了可乐以后,阿牛就要求和seeyou一起分享这一瓶可乐,而且一定要喝的和seeyou一样多.但see ...

  7. 【HDU - 1495】非常可乐

    -->非常可乐  Descriptions: 大家一定觉的运动以后喝可乐是一件很惬意的事情,但是seeyou却不这么认为.因为每次当seeyou买了可乐以后,阿牛就要求和seeyou一起分享这一 ...

  8. hdoj 1495 非常可乐【bfs隐式图】

    非常可乐 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submis ...

  9. HDU1495(bfs)

    非常可乐 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submis ...

随机推荐

  1. JavaScript之子类构建工具

    (function(){ var initializing = false; var superPattern = /xyz/.test(function(){ xyz; }) ? /\b_super ...

  2. [转]bus error与segment error

    在c程序中,经常会遇到段错误(segment error)和总线错误(bus error),这两种问题出现的原因可能如下 段错误: 对一个NULL指针解引用. 访问程序进程以外的内存空间. 实际上,第 ...

  3. JS实现随机背景图片与图片大小变换的效果

    经常在网上见一些网站访问一次背景图片改变一次,而且图片的大小不停变换,于是想着自己研究一下. 背景图片可以通过JS的随机数来改变图片的src来实现随机图片,图片的大小变换可以用JS的setInterv ...

  4. 改环境变量改出问题了,vi,ls这些命令都不能用了,怎么办

    1.出现这个问题肯定是以前的基本环境变量都用不了了(大部分情况就是多了一个空格) 解决办法: cd /usr/bin 下执行vi命令  修改环境变量  然后source /etc/profile   ...

  5. Windows Server2008各版本区别

    Windows Server 2008 是专为强化下一代网络.应用程序和 Web 服务的功能而设计,是有史以来最先进的 Windows Server 操作系统.拥有 Windows Server 20 ...

  6. CentOS挂载光盘

    mkdir /mnt/cdrom mount /dev/cdrom /mnt/cdrom umount /dev/cdrom /mnt/cdrom 在Ambari集群中配置192.168.0.210: ...

  7. Ubuntu Eclipse C++运行问题:launch failed.Binary not found

    在Ubuntu下的Eclipse C++环境出现launch failed.Binary not found问题时,可采用如下解决方案: (1)首先检查系统中是否成功安装g++.如果console输出 ...

  8. C++:greater<int>和less<int>

    greater和less是xfunctional.h中的两个结构体,代码如下: template<class _Ty = void> struct less { // functor fo ...

  9. mysql5.5.48的my.cnf配置

    MYSQL配置 [client] port = 3306 socket = /tmp/mysql.sock [mysqld] port = 3306 default-storage-engine=My ...

  10. 转载:configure生成的文件(1.5.3)《深入理解Nginx》(陶辉)

    原文:https://book.2cto.com/201304/19620.html 当configure执行成功时会生成objs目录,并在该目录下产生以下目录和文件:|---ngx_auto_hea ...