zoukankan      html  css  js  c++  java
  • POJ 3414

    bfs不解释

    #include <stdio.h>
    #define maxn 101
    int visit[maxn][maxn];
    int vol[2];//容量
    int c;
    int flag;
    typedef struct TNode//定义状态
    {
    	int cop[2];
    	int fa;//父节点
    	int dis;//距离
    	int op;//操作
    }Node;
    Node node[maxn*maxn];
    void printPath(int tem)//递归打印操作
    {
    	if(node[tem].op!=-1)
    		printPath(node[tem].fa);
    	if(node[tem].op!=-1){
    	int i=node[tem].op/10;
    	int j=node[tem].op%10;
    	int k=(j==0?1:0);
    	j+=1;
    	k+=1;
    	if(i==0)
    	{
    		printf("FILL(%d)\n",j);
    	}
    	else if(i==1)
    	{
    		printf("DROP(%d)\n",j);
    	}
    	else
    	{
    		printf("POUR(%d,%d)\n",j,k);
    	}
    	return;}
    }
    void bfs()
    {
    	int font=0,rear=1;
    	node[font].cop[0]=node[font].cop[1]=node[font].fa=node[font].dis=0;
    	node[font].op=-1;
    	visit[node[font].cop[0]][node[font].cop[1]]=1;
    	while(font<rear)
    	{
    		Node &u=node[font];
    		if(node[font].cop[0]==c||node[font].cop[1]==c){
    			flag=1;
    			printf("%d\n",node[font].dis);
    			printPath(font);
    			return;
    		}
    		int i,j;
    		for(i=0;i<3;i++)//3种操作
    		{
    			for(j=0;j<2;j++)//操作的对象
    			{
    				Node &v=node[rear];
    				v.cop[0]=u.cop[0];
    				v.cop[1]=u.cop[1];
    				if(i==0)
    				{
    					 v.cop[j]=vol[j];
    				}
    				else if(i==1)
    				{
    					v.cop[j]=0;
    				}
    				else
    				{
    					int k=(j==0?1:0);
    					int amount=(v.cop[j]<(vol[k]-v.cop[k])?v.cop[j]:(vol[k]-v.cop[k]));
    					v.cop[j]-=amount;
    					v.cop[k]+=amount;
    				}
    				if(!visit[v.cop[0]][v.cop[1]])
    				{
    					visit[v.cop[0]][v.cop[1]]=1;
    					v.fa=font;
    					v.dis=u.dis+1;
    					v.op=i*10+j;
    					rear++;
    				}
    			}
    		}
    		font++;
    	}
    }
    int main()
    {
    	while(scanf("%d",&vol[0])!=EOF)
    	{
    		flag=0;
    		scanf("%d %d" ,&vol[1],&c);
    		bfs();
    		if(!flag)
    		{
    			printf("impossible\n");
    		}
    	}
    	return 0;
    }


     

  • 相关阅读:
    HDU_1242_Rescue
    HDU_1175_连连看
    HDU_1072_Nightmare
    HDU_2544_最短路
    POJ_2195_Going Home
    POJ_3565_Ants
    KM算法(Kuhn-Munkres)
    POJ_2536_Gopher II
    ODATA 云驱动 http://www.cdata.com/cloud/
    Wijmo 5 与Breeze 的组合,及与METRONIC 的集成
  • 原文地址:https://www.cnblogs.com/lj030/p/3002183.html
Copyright © 2011-2022 走看看