当前位置:网站首页>Poj3414 extensive search
Poj3414 extensive search
2022-07-05 21:43:00 【Full stack programmer webmaster】
Hello everyone , I meet you again , I'm the king of the whole stack
<span style="color:#330099;">/*
D - D
Time Limit:1000MS Memory Limit:65536KB 64bit IO Format:%I64d & %I64u
Submit
Status
Practice
POJ 3414
Description
You are given two pots, having the volume of A and B liters respectively. The following operations can be performed:
FILL(i) fill the pot i (1 ≤ i ≤ 2) from the tap;
DROP(i) empty the pot i to the drain;
POUR(i,j) pour from pot i to pot j; after this operation either the pot j is full (and there may be some water left in the pot i), or the pot i is empty (and all its contents have been moved to the pot j).
Write a program to find the shortest possible sequence of these operations that will yield exactly C liters of water in one of the pots.
Input
On the first and only line are the numbers A, B, and C. These are all integers in the range from 1 to 100 and C≤max(A,B).
Output
The first line of the output must contain the length of the sequence of operations K. The following K lines must each describe one operation. If there are several sequences of minimal length, output any one of them. If the desired result can’t be achieved, the first and only line of the file must contain the word ‘impossible’.
Sample Input
3 5 4
Sample Output
6
FILL(2)
POUR(2,1)
DROP(1)
POUR(2,1)
FILL(2)
POUR(2,1)
By Grant Yuan
2014.7.14
poj 3414
Guang Shu
*/
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cstdlib>
using namespace std;
bool flag=0;
int next[6]={0,1,2,3,4,5};
int a,b,c;
int aa,bb,cc;
typedef struct{
int a;
int b;
int f;
int sum;
int ope;
}node;
int res;
node q[10000];
bool mark[101][101];
int top,base;
int top1;
int s[10000];
bool can(int x1,int y1)
{
if(x1>=0&&x1<=aa&&y1>=0&&y1<=bb&&mark[x1][y1]==0)
return 1;
return 0;
}
void slove()
{ int a1,b1,f1,a2,b2;
while(top>=base){//cout<<"zhang"<<endl;
if(q[base].a==cc||q[base].b==cc){
flag=1;
res=q[base].sum;
break;
}
for(int i=0;i<6;i++){
if(i==0)
{ a1=aa;
b1=q[base].b;
if(can(a1,b1)){
q[++top].a=a1;
q[top].b=b1;
q[top].f=base;
q[top].sum=q[base].sum+1;
q[top].ope=i;
mark[a1][b1]=1;}
}
else if(i==1)
{
a1=q[base].a;
b1=bb;
if(can(a1,b1)){
q[++top].a=a1;
q[top].b=b1;
q[top].f=base;
q[top].sum=q[base].sum+1;
q[top].ope=i;
mark[a1][b1]=1;}
}
else if(i==2)//1dao2
{ int m,n;
m=q[base].a;
n=bb-q[base].b;
if(m>=n){
a1=m-n;
b1=bb;
if(can(a1,b1)){
q[++top].a=a1;
q[top].b=b1;
q[top].f=base;
q[top].sum=q[base].sum+1;
q[top].ope=i;
mark[a1][b1]=1;} }
else{
a1=0;
b1=m+q[base].b;
if(can(a1,b1)){
q[++top].a=a1;
q[top].b=b1;
q[top].f=base;
q[top].sum=q[base].sum+1;
q[top].ope=i;
mark[a1][b1]=1;}
}}
else if(i==3)//1dao2
{ int m,n;
m=aa-q[base].a;
n=q[base].b;
if(n>=m){
a1=aa;
b1=n-m;
if(can(a1,b1)){
q[++top].a=a1;
q[top].b=b1;
q[top].f=base;
q[top].sum=q[base].sum+1;
q[top].ope=i;
mark[a1][b1]=1;} }
else{
b1=0;
a1=n+q[base].a;
if(can(a1,b1)){
q[++top].a=a1;
q[top].b=b1;
q[top].f=base;
q[top].sum=q[base].sum+1;
q[top].ope=i;
mark[a1][b1]=1;}
}}
else if(i==4)
{
a1=0;
b1=q[base].b;
if(can(a1,b1)){
q[++top].a=a1;
q[top].b=b1;
q[top].f=base;
q[top].sum=q[base].sum+1;
q[top].ope=i;
mark[a1][b1]=1;
}}
else if(i==5)
{
b1=0;
a1=q[base].a;
if(can(a1,b1)){
q[++top].a=a1;
q[top].b=b1;
q[top].f=base;
q[top].sum=q[base].sum+1;
q[top].ope=i;
mark[a1][b1]=1;
}
}
}
base++;
}}
void print()
{ top1=-1;
int i=base,j;
while(1){
s[++top1]=q[i].ope;
j=q[i].f;
i=j;
if(i==0)
break;
}
for(j=top1;j>=0;j--)
{
if(s[j]==0)
cout<<"FILL(1)"<<endl;
else
if(s[j]==1)
cout<<"FILL(2)"<<endl;
else
if(s[j]==2)
cout<<"POUR(1,2)"<<endl;
else
if(s[j]==3)
cout<<"POUR(2,1)"<<endl;
else
if(s[j]==4)
cout<<"DROP(1)"<<endl;
else
if(s[j]==5)
cout<<"DROP(2)"<<endl;
}
}
int main()
{
cin>>aa>>bb>>cc;
top=-1;
memset(mark,0,sizeof(mark));
mark[0][0]=1;
base=0;
q[++top].a=0;
q[top].b=0;
q[top].f=0;
q[top].sum=0;
q[top].ope=0;
slove();
if(flag==0) cout<<"impossible"<<endl;
else{cout<<res<<endl;
print();}
return 0;
}
</span>Copyright notice : This article is an original blog article . Blog , Without consent , Shall not be reproduced .
Publisher : Full stack programmer stack length , Reprint please indicate the source :https://javaforall.cn/117579.html Link to the original text :https://javaforall.cn
边栏推荐
- Deployment of Jenkins under win7
- MySQL InnoDB Architecture Principle
- EasyExcel的讀寫操作
- Uni app Bluetooth communication
- Recursive query of multi-level menu data
- Access Zadig self-test environment outside the cluster based on ingress controller (best practice)
- How to prepare for the algorithm interview and answer the algorithm interview questions
- Problems encountered in office--
- "Grain mall" -- Summary and induction
- SQL common syntax records
猜你喜欢

Kingbasees v8r3 cluster maintenance case -- online addition of standby database management node

Comprehensive optimization of event R & D workflow | Erda version 2.2 comes as "7"

校招期间 准备面试算法岗位 该怎么做?

Drawing HSV color wheel with MATLAB

JMeter installation under win7

Deeply convinced plan X - network protocol basic DNS

秋招将临 如何准备算法面试、回答算法面试题

2.2.3 output of documents

MMAP

Alibaba cloud award winning experience: build a highly available system with polardb-x
随机推荐
2022-07-03-CKA-粉丝反馈最新情况
Making global exception handling classes with aspect
Reading and writing operations of easyexcel
NET中小型企业项目开发框架系列(一个)
Drawing HSV color wheel with MATLAB
Teach yourself to train pytorch model to Caffe (III)
poj 3237 Tree(树链拆分)
KingbaseES V8R3集群维护案例之---在线添加备库管理节点
[daily training -- Tencent select 50] 89 Gray code (only after seeing the solution of the problem)
华为游戏多媒体调用切换房间方法出现异常Internal system error. Reason:90000017
What should I do to prepare for the interview algorithm position during school recruitment?
Arcgis\qgis no plug-in loading (no offset) mapbox HD image map
Selenium finds the contents of B or P Tags
Efficiency difference between row first and column first traversal of mat data types in opencv
Defect detection - Halcon surface scratch detection
MySQL InnoDB Architecture Principle
2.2 basic grammar of R language
Robot operation mechanism
Alibaba cloud award winning experience: build a highly available system with polardb-x
他们主动布局(autolayout)环境的图像编辑器