• zoj1005 Jugs


    /*
    题意:有容量分别为Ca Cb 的A B两个壶 需要你通过几种操作使B壶中装有n容量的水
    有如下操作
    empty A
    empty B
    fill A
    fill B
    pour A B
    pour B A
    成功后输出success
    */
    #include<iostream>
    #include<stdio.h>
    #include<cstring>
    #include<string>
    #include<vector>
    using namespace std;
    int vis[1001][1001];
    int ca,cb,n;
    vector <string> v;
    void DFS(int x,int y)
    {
    	if(y==n)
    	{
    		for(int i=0;i<v.size();i++)
    			cout<<v[i]<<endl;
    		cout<<"success"<<endl;
    		return;
    	}
    	if(!vis[ca][y])
    	{
    		vis[ca][y]=1;
    		v.push_back("fill A"); 
    	    DFS(ca,y);
    		v.pop_back();
    	}
    	if(!vis[x][cb])
    	{
    		vis[x][cb]=1;
    		v.push_back("fill B");
            DFS(x,cb);
    		v.pop_back();
    	}
        if(!vis[0][y])
    	{  
    		vis[0][cb]=1;
    		v.push_back("empty A");
    	    DFS(0,cb);
    		v.pop_back();
    	}
    	if(!vis[x][0])
    	{  
    		vis[x][0]=1;
    		v.push_back("empty B");
    	    DFS(x,0);
    		v.pop_back();
    	}
    	if(x+y>=cb&&!vis[x-(cb-y)][cb])
    	{
    		vis[x-cb+y][cb]=1;
    		v.push_back("pour A B");
    		DFS(x-cb+y,cb);
    		v.pop_back();
    	}
    	if(x+y<cb&&!vis[0][x+y])
    	{
    		vis[0][x+y]=1;
    		v.push_back("pour A B");
    		DFS(0,x+y);
    		v.pop_back();
    	}
    	if(x+y>=ca&&!vis[ca][x+y-ca])
    	{
    		vis[ca][x+y-ca]=1;
    		v.push_back("pour B A");
    		DFS(ca,x+y-ca);
    		v.pop_back();
    	}
    	if(x+y<ca&&!vis[x+y][0])
    	{
    		vis[x+y][0]=1;
    		v.push_back("pour B A");
    		DFS(x+y,0);
    		v.pop_back();
    	}
    }
    int main()
    {
       while(cin>>ca>>cb>>n)
       {
    
    	   v.clear();
    	   memset(vis,0,sizeof(vis));
    	   vis[0][0]=1;
    	   DFS(0,0);
       }
    }
    
  • 相关阅读:
    平衡的括号[UVA-673]
    Spark GraphX图形数据分析
    Spark sql
    Spark 分布式计算原理
    spark 算子实例
    window scala-2.11.8 安装
    spark 2.3.3 安装
    安装jdk
    Logstash-6.2.2安装和Kibana-6.2.2安装:
    elasticsearch-6.2.2 安装
  • 原文地址:https://www.cnblogs.com/sook/p/2036937.html
Copyright © 2020-2023  润新知