错排问题,在IT面试笔试中都经常见到,我从网上摘抄了一些,希望对自己和大家都有帮助!
/**
N个人去旅行,在旅店开了N个房间,钥匙挂在大厅的墙上,钥匙上没有标号,没人随手拿了一把钥匙,
请用程序实现算出所有人都拿错钥匙的可能性有几种。
*/
//递归方法解决问题,但是效率比较低,不符合递归的合成效益法则,递归调用中做了重复性的工作
int GetCuoPaiNum(int N){
if(N==1)
return 0;
if(N==2)
return 1;
else
return (N-1)*(GetCuoPaiNum(N-1)+GetCuoPaiNum(N-2));
}