package PKU.BFS;
import java.util.Collection;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
import java.util.Queue;
import java.util.Scanner;
/**
* ID:3414
* BFS
* @author yhm
*
*/
public class Pots {
static int A=0;
static int B=0;
static int C=0;
static int mark = -1;
static int blank = 0;
static Queue<Node> Q;
static Node[][] pot;
/**
* @param args
*/
public static void main(String[] args) {
Scanner cin = new Scanner(System.in);
A = cin.nextInt();
B = cin.nextInt();
C = cin.nextInt();
pot = new Node[A+1][B+1];
Q = new ListQueue();
BFS();
}
static void BFS(){
Node root = new Node(0,0,null,0);
pot[0][0] = root;
Q.offer(root);
while(!Q.isEmpty()){
Node n = Q.poll();
for(int i=1;i<=6;i++){
Node next = findNextNode(n, i);
int l1 = next.l1;
int l2 = next.l2;
if(pot[l1][l2]==null){
pot[l1][l2] = next;
if(l1==C || l2==C){
//do something
StringBuffer str = new StringBuffer();
Node node = next;
int num=0;
while(node.prev!=null){
num++;
str.insert(0, translate(node.mark));
node = node.prev;
}
str.insert(0, num+"\n");
System.out.println(str.toString());
return;
}
Q.offer(next);
}
}
}
System.out.println("impossible");
}
static String translate(int edge){
if(edge==1){
//FILL(1)
return "FILL(1)\n";
}
else if(edge==2){
//FILL(2)
return "FILL(2)\n";
}
else if(edge==3){
//DROP(1)
return "DROP(1)\n";
}
else if(edge==4){
//DROP(2)
return "DROP(2)\n";
}
else if(edge==5){
//POUR(1,2)
return "POUR(1,2)\n";
}
else{
//POUR(2,1)
return "POUR(2,1)\n";
}
}
static Node findNextNode(Node current, int edge){
Node n = null;
int l1=0;
int l2=0;
if(edge==1){
//FILL(1)
l1 = A;
l2 = current.l2;
n = new Node(l1,l2,current,edge);
}
else if(edge==2){
//FILL(2)
l1 = current.l1;
l2 = B;
n = new Node(l1,l2,current,edge);
}
else if(edge==3){
//DROP(1)
l1 = 0;
l2 = current.l2;
n = new Node(l1,l2,current,edge);
}
else if(edge==4){
//DROP(2)
l1 = current.l1;
l2 = 0;
n = new Node(l1,l2,current,edge);
}
else if(edge==5){
//POUR(1,2)
if(current.l1+current.l2>B){
l2 = B;
l1 = current.l1-(B-current.l2);
}
else{
l2 = current.l2+current.l1;
l1 = 0;
}
n = new Node(l1,l2,current,edge);
}
else{
//POUR(2,1)
if(current.l1+current.l2>A){
l1 = A;
l2 = current.l2-(A-current.l1);
}
else{
l1 = current.l1+current.l2;
l2 = 0;
}
n = new Node(l1,l2,current,edge);
}
return n;
}
}
class Node{
int l1;
int l2;
Node prev;
int mark;
public Node(int l1, int l2, Node prev,int mark) {
super();
this.l1 = l1;
this.l2 = l2;
this.prev = prev;
this.mark = mark;
}
}
/*
class ListQueue implements Queue{
private List l = new LinkedList();
public Object element() {
// TODO Auto-generated method stub
return null;
}
public boolean offer(Object o) {
return l.add(o);
}
public Object peek() {
// TODO Auto-generated method stub
return null;
}
public Object poll() {
// TODO Auto-generated method stub
return l.remove(0);
}
public Object remove() {
// TODO Auto-generated method stub
return null;
}
public boolean add(Object o) {
// TODO Auto-generated method stub
return false;
}
public boolean addAll(Collection c) {
// TODO Auto-generated method stub
return false;
}
public void clear() {
// TODO Auto-generated method stub
}
public boolean contains(Object o) {
// TODO Auto-generated method stub
return false;
}
public boolean containsAll(Collection c) {
// TODO Auto-generated method stub
return false;
}
public boolean isEmpty() {
// TODO Auto-generated method stub
return l.isEmpty();
}
public Iterator iterator() {
// TODO Auto-generated method stub
return null;
}
public boolean remove(Object o) {
// TODO Auto-generated method stub
return false;
}
public boolean removeAll(Collection c) {
// TODO Auto-generated method stub
return false;
}
public boolean retainAll(Collection c) {
// TODO Auto-generated method stub
return false;
}
public int size() {
// TODO Auto-generated method stub
return 0;
}
public Object[] toArray() {
// TODO Auto-generated method stub
return null;
}
public Object[] toArray(Object[] a) {
// TODO Auto-generated method stub
return null;
}
}*/
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
src.rar_ Binary search java_KMP_PKU_java pku_并查集算法 (109个子文件)
Pots.java 5KB
DungeonMaster.java 4KB
Asteroids.java 4KB
FlipGame1.java 4KB
PrimePath.java 4KB
KnightMoves.java 4KB
CatchThatCow.java 3KB
PopularCows.java 3KB
Frogger.java 3KB
TheBottomofaGraph.java 3KB
SortingItAllOut.java 3KB
PopularCows1.java 3KB
TheBottomofaGraph_1.java 3KB
FindthemCatchthem1.java 2KB
FenceRepair.java 2KB
HereWeGoAgain.java 2KB
Spellchecker.java 2KB
GuardianofDecency.java 2KB
ExpensiveWedding.java 2KB
SortingItAllOut_solve2.java 2KB
FindthemCatchthem.java 2KB
Network.java 2KB
GopherII.java 2KB
ABugsLife.java 2KB
HumanGeneFunctions.java 2KB
GoneFishing.java 2KB
CounterfeitDollar.java 2KB
SilverCowParty.java 2KB
Compromise.java 2KB
CowExhibition.java 2KB
Radar.java 2KB
HardwoodSpecies.java 2KB
Packets.java 2KB
UbiquitousReligions.java 2KB
CubeStacking.java 2KB
AgriNet.java 2KB
SubSet.java 2KB
GirlsandBoys.java 2KB
EXTENDEDLIGHTSOUT.java 2KB
StockbrokerGrapevine.java 2KB
PaintersProblem.java 2KB
Chessboard.java 2KB
AKnightsJourney.java 2KB
Dividing.java 2KB
FunctionRunFun.java 1KB
ADD.java 1KB
TiltheCowsComeHome.java 1KB
Sudoku.java 1KB
BlueJeans.java 1KB
CashMachine.java 1KB
FlipGame.java 1KB
PrePosterous.java 1KB
Square.java 1KB
ID4873279.java 1KB
BuildTree.java 1KB
Zipper.java 1KB
OilDeposits.java 1KB
ConstructingRoads.java 1KB
Fibonacci.java 1KB
TotheMax.java 1KB
Arbitrage.java 1KB
NestedDolls.java 1KB
DistanceonChessboard.java 1KB
WoodenSticks.java 1KB
Matrix.java 1KB
Ski.java 1KB
JungleRoads.java 1KB
Asteroids.java 1KB
Brackets.java 1KB
TheSuspects.java 1KB
PostOffice.java 1KB
LittleShopOfFlowers.java 1KB
ThePerfectStall.java 1KB
Highways.java 1KB
Period.java 1KB
DNASorting.java 1KB
SeektheNameSeektheFame.java 1KB
TestingtheCATCHER.java 1KB
KMP.java 1017B
Palindrome.java 1015B
Joseph.java 1014B
AGTC.java 986B
FindTheMultiple.java 963B
PowerStrings.java 954B
TheTriangle.java 948B
Subsequence.java 917B
UglyNumbers.java 900B
LongestOrderedSubsequence.java 887B
Parencodings.java 882B
AncientCipher.java 851B
Biorhythms.java 849B
AllinAll.java 792B
CommonSubsequence.java 763B
Babelfish.java 755B
RecamansSequence.java 754B
WorldCupNoise.java 742B
Doubles.java 585B
SkewBinary.java 582B
SelfNumbers.java 578B
NumberguessingGame.java 574B
共 109 条
- 1
- 2
资源评论
weixin_42653672
- 粉丝: 93
- 资源: 1万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功