栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

poj 1606 Jugs

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

poj 1606 Jugs

#include<iostream>#include<stdio.h>#include<queue>#include<string.h>using namespace std;typedef struct Node{    int xx;    int yy;} Node;typedef struct Path{    int x,y;    int step;} Path;int vis[1010][1010];Path path[1010][1010];Node pos;int  ca,cb,n;bool flag;char map[7][12]={    {"fill A"},    {"fill B"},    {"empty A"},    {"empty B"},    {"pour A B"},    {"pour B A"},};Node judge(int i,Node p){    Node a;    int t;    switch(i)    {    case 0:        a.xx=ca;        a.yy=p.yy;        break;    case 1:        a.xx=p.xx;        a.yy=cb;        break;    case 2:        a.xx=0;        a.yy=p.yy;        break;    case 3:        a.xx=p.xx;        a.yy=0;        break;    case 4:        t=cb-p.yy;        if(t>=p.xx)        { a.xx=0; a.yy=p.yy+p.xx; break;        }        else        { a.yy=cb; a.xx=p.xx-t; break;        }    case 5:        t=ca-p.xx;        if(t>=p.yy)        { a.xx=p.xx+p.yy; a.yy=0; break;        }        else        { a.xx=ca; a.yy=p.yy-t; break;        }    }    return a;}void BFS(){    queue<Node> q;    Node tem;    tem.xx=0;//(0,0)为起始点。    tem.yy=0;    vis[tem.xx][tem.yy]=true;    q.push(tem);    while(!q.empty())    {        Node t=q.front();        q.pop();        for(int i=0; i<6; i++)        { Node np=judge(i,t); if(!vis[np.xx][np.yy]) {     vis[np.xx][np.yy]=1;     path[np.xx][np.yy].step=i;  //放的是它前驱结点的值。     path[np.xx][np.yy].x=t.xx;     path[np.xx][np.yy].y=t.yy;     q.push(np);     if(np.yy==n)     {         pos=np;         flag=true;         break;     } }        }        if(flag) return ;    }}void pr(int tx,int ty)//递归打印路径:{    if(tx==0&&ty==0)    {        return ;    }    pr(path[tx][ty].x, path[tx][ty].y);    printf("%sn",map[path[tx][ty].step]);}int main(){    while(scanf("%d%d%d",&ca,&cb,&n)!=EOF)    {        flag=false;        memset(vis,0,sizeof(vis));        memset(path,0,sizeof(path));        BFS();        pr(pos.xx,pos.yy);        printf("successn");    }    return 0;}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/373863.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号