ÇëÊäÈë´ð°¸
ÎÊÌ⣺4.3 ¡¾ÎÊÌâ3¡¿(4·Ö)
µ±n=4ʱ£¬ÓÐ (6) ÖÖ°Ú·Å·½Ê½£¬·Ö±ðΪ (7) ¡£
½âÎö:
(1)queen[i]==queen[j]»òÆäµÈ¼ÛÐÎʽ (2)1
(3)Place(j)&&j<=n»òÆäµÈ¼ÛÐÎʽ (4)Nqueen(j+1) »ØËÝ·¨ 2¸ö (2413) (3142)
ÔĶÁÏÂÁÐ˵Ã÷ºÍJava´úÂ룬½«Ó¦ÌîÈë(n)´¦µÄ×Ö¾äдÔÚ´ðÌâÖ½µÄ¶ÔÓ¦À¸ÄÚ¡£ ¡¾ËµÃ÷¡¿
ijÈí¼þ¹«Ë¾Óû¿ª·¢Ò»¿îÆû³µ¾ºËÙÀàÓÎÏ·£¬ÐèҪģÄⳤÂÖÌ¥ºÍ¶ÌÂÖÌ¥¼±É²³µÊ±ÔÚÂ·ÃæÉÏÁôϵIJ»Í¬ºÛ¼££¬²¢¿¼ÂǺóÐøÄÜÄ£Äâ¸ü¶àÖÖÂÖÌ¥¼±É²³µÊ±µÄºÛ¼£¡£ÏÖ²ÉÓòßÂÔ(Strategy)Éè¼ÆÄ£Ê½À´ÊµÏÖ¸ÃÐèÇó£¬ËùÉè¼ÆµÄÀàͼÈçͼ5-1Ëùʾ¡£
¡¾Java ´úÂë¡¿ import java.util.*;
interface BrakeBehavior { public (1);
/* ÆäÓà´úÂëÊ¡ÂÔ */
};
class LongWheelBrake implements BrakeBehavior { public void stop() {
System.out.println( \Ä£ÄⳤÂÖ̥ɲ³µºÛ¼££¡ \}
/* ÆäÓà´úÂëÊ¡ÂÔ */ };
class ShortWheelBrake implements BrakeBehavior { public void stop() {
System.out.println( \Ä£Äâ¶ÌÂÖ̥ɲ³µºÛ¼££¡ \}
/* ÆäÓà´úÂëÊ¡ÂÔ */ };
abstract class Car { protected (2)wheel; public void brake() { (3); }
/* ÆäÓà´úÂëÊ¡ÂÔ */ } :
class ShortWheelCar extends Car {
public ShortWheelCar( BrakeBehavior behavior ) { (4); }
/* ÆäÓà´úÂëÊ¡ÂÔ */ };
class StrategyTest {
public static void main( String[] args )
{
BrakeBehavior brake = new ShortWheelBrake(); ShortWheelCar car1 = new ShortWheelCar( brake ); car1.(5); } }
ÎÊÌ⣺5.1 ½«Ó¦ÌîÈë¿Õ°×´¦µÄ×Ö¾äдÔÚ´ðÌâÖ½µÄ¶ÔÓ¦À¸ÄÚ¡£ ½âÎö:
(1)void stop() (2)BrakeBehavior (3)wheel.stop() (4)behavior.stop() (5)brake()
ÔĶÁÏÂÁÐ˵Ã÷ºÍC++´úÂ룬½«Ó¦ÌîÈë(n)´¦µÄ×Ö¾äдÔÚ´ðÌâÖ½µÄ¶ÔÓ¦À¸ÄÚ¡£ ¡¾ËµÃ÷¡¿
ijÈí¼þ¹«Ë¾Óû¿ª·¢Ò»¿îÆû³µ¾ºËÙÀàÓÎÏ·£¬ÐèҪģÄⳤÂÖÌ¥ºÍ¶ÌÂÖÌ¥¼±É²³µÊ±ÔÚÂ·ÃæÉÏÁôϵIJ»Í¬ºÛ¼££¬²¢¿¼ÂǺóÐøÄÜÄ£Äâ¸ü¶àÖÖÂÖÌ¥¼±É²³µÊ±µÄºÛ¼£¡£ÏÖ²ÉÓòßÂÔ(Strategy)Éè¼ÆÄ£Ê½À´ÊµÏÖ¸ÃÐèÇó£¬ËùÉè¼ÆµÄÀàͼÈçͼ6-1Ëùʾ¡£
¡¾C++´úÂë¡¿
#include using namespace std; class BrakeBehavior { public: (1); /* ÆäÓà´úÂëÊ¡ÂÔ */ }; class LongWheelBrake £º public BrakeBehavior { public: void stop() { cout << \Ä£ÄⳤÂÖ̥ɲ³µºÛ¼£! \} /* ÆäÓà´úÂëÊ¡ÂÔ */ }; class ShortWheelBrake : public BrakeBehavior { public: void stop() { cout << \Ä£Äâ¶ÌÂÖ̥ɲ³µºÛ¼£! \} /* ÆäÓà´úÂëÊ¡ÂÔ */ }; class Car { protected: (2)wheel; public: void brake() { (3); } /* ÆäÓà´úÂëÊ¡ÂÔ */ }; class ShortWheelCar : public Car { public: ShortWheelCar( BrakeBehavior* behavior ) { (4); } /* ÆäÓà´úÂëÊ¡ÂÔ */ }; int main() { BrakeBehavior * brake = new ShortWheelBrake(); ShortWheelCar car1( brake ) : car1.(5); return(0); }
ÎÊÌ⣺6.1 ½«Ó¦ÌîÈë(n)´¦µÄ×Ö¾äдÔÚ´ðÌâÖ½µÄ¶ÔÓ¦À¸ÄÚ¡£ [´ð°¸]
virtual void stop()=0; BrakeBehavior* wheel->stop() behavior->stop() brake()