題目為「周遊的騎士」,來自一本邏輯推理書。
**實現如下:
核心思想是用mytry遞迴函式來實現,check_ok函式測試線索是否成立。
#include
#include
#define empty (-1)
using
namespace
std;
int b[4][5];
enum name ;
enum month ;
enum week ;
enum place ;
enum row ;
char sname[80]= ;
char smonth[80]= ;
char sweek[80]= ;
char splace[80]= ;
void printboard()
bool check_ok(int r, int c)
}//r3 dimide不是1月,他比森林中的週期大 1 周
if(b[month][dimide] != empty && b[month][dimide] == m1) return
false;
for(j=0; j<5; j++)
}//r4 村邊的騎士不是9月份
for(j=0; j<5; j++)
}//r5 baoqiu在沼澤荒野,不是4周
if(b[place][baoqiu] != empty && b[place][baoqiu] != zhaozehuangye) return
false;
if(b[week][baoqiu] != empty && b[week][baoqiu] == w4 ) return
false ;
//r6 6周對應3月
for(j=0; j<5; j++)
}//r7 sibainisi對應5周
if(b[week][sibainisi] != empty && b[week][sibainisi] != w5 ) return
false ;
//r8 kaowode對應7月
if(b[month][kaowode] != empty && b[month][kaowode] != m7) return
false;
return
true;
} }
if(flagchongfu) continue;
if(check_ok(row,col))
else
mytry(count+1);
}else
continue;
}b[row][col]=empty;
return ;
}int main()
一道邏輯推理題 猜生日
小明和小強都是張老師的學生,張老師的生日是m月n日,2人都知道張老師的生日是下列10組中的一天,張老師把m值告訴了小明,把n值告訴了小強,張老師問他們知道他的生日是哪一天?3月4日 3月5日 3月8日 6月4日 6月7日 9月1日 9月5日 12月1日 12月2日 12月8日 小明說 如果我不知道的...
解答微軟的一道邏輯推理題
以下是微軟有名的一道邏輯推理題,網上有不少人給出了答案,但是推理過程都有些問題,在這裡我給出我的推理過程 教授選出兩個從2到9的數,把它們的和告訴學生甲,把它們的積告訴學生乙,讓他們輪流猜這兩個數 甲說 我猜不出 乙說 我猜不出 甲說 我猜到了 乙說 我也猜到了 問這兩個數是多少 我的解答 設甲聽到...
使用程式解決一道邏輯推理題
小明和小強都是張老師的學生,張老師的生日是m月n日,2人都知道張老師的生日是下列10組中的一天 3月4日 3月5日 3月8日 6月4日 6月7日 9月1日 9月5日 12月1日 12月2日 12月8日 張老師將m值告訴了小明,將n值告訴了小強,張老師問他們知道他的生日是哪一天嗎?小明說 如果我不知道...