问题:四人夜过桥,步行时间分别为 1、2、5、10 分钟,四人只有一台手电筒,一趟最多两人过桥,一趟过桥须持手电筒,时间以最慢者计,问 17 分钟内可否过桥,如何过桥? #define STATE char #define PATH char const int TimeLimit = 17; STATE State[16] = { 1 }; PATH Path[16]; const int Cop[10] = { 1, 2, 4, 8, 3, 5, 9, 6, 10, 12 }; const char* Cops[10] = { "1,耗时 1 分", "2,耗时 2 分", "5,耗时 5 分", "10,耗时 10 分", "1 和 2,耗时 2 分", "1 和 5,耗时 5 分", "1 和 10,耗时 10 分", "2 和 5,耗时 5 分", "2 和 10,耗时 10 分", "5 和 10,耗时 10 分" }; const int Time[10] = { 1, 2, 5, 10, 2, 5, 10, 5, 10, 10 }; void Ferry ( int state, int dir, int p, int time ) { int i, cop, j; for ( i = 0; i < 10; i++ ) { if ( Cop[i] != (cop = state & Cop[i] ) ) continue; state &= ~cop; time += Time[i]; if ( State[ dir ? ~state & 15 : state ] ||