state.java

来自「Missionaries and cannibals algorithm」· Java 代码 · 共 49 行

JAVA
49
字号
class State{
   int m;  // number of missionaries on the left bank;
   int c;  // number of cannibals on the left bank;
   int b;  // 0 for boat on left bank, 1 for boat on the right;
 
   State()
   { // construct the start state (3,3,L)
     m = 3;
     c = 3;
     b = 0;
   }
   State(State s)
   { m = s.m;
     c = s.c;
     b = s.b;
   }
   boolean legal()
   /* test legality of this */
   { if(m < 0 || m > 3 || c<0 || c > 3) return false;
     if(3-m < 0 || 3-m > 3  || 3-c <0 || 3-c > 3) return false;
     if(m > 0 && c > m) return false;
     if(3-m >0 && 3-c > 3-m) return false;
     return true;
   }
 
   /** return state resulting from this by moving Mis missionaries and Can
   *   cannibals across the river.
   */
   State move(int Mis, int Can)
   { State ans = new State(this);
     if(b == 0)
        { ans.m = m - Mis;
          ans.c = c - Can;
          ans.b = 1;
        }
     else
        { ans.m = m + Mis;
          ans.c = c + Can;
          ans.b = 0;
        }
     return ans;
   }
 
   void display()
   /* display this on the screen */
   { System.out.println(m + " " + c + " " + (b == 0 ? 'L' : 'R'));
   }
 }

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?