======投信问题,征求高手,立即给分,不够再加?

Chrisma 2003-04-06 05:24:32
有n个信箱,编号1到n,每个信箱只能装1封信。现要将编号1到n的n封信投入这些
信箱,如果信的编号和信箱的编号不对应,则算投错。如果全部不对应则算全部
投错。问全部投错的方法共有多少种?最好用递归。
...全文
28 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
Chrisma 2003-04-07
  • 打赏
  • 举报
回复
其实,我也想到是阶乘问题了,正准备取消贴子。不过还是兑现,接分。
fireinsky 2003-04-06
  • 打赏
  • 举报
回复
这个问题,我想应该是阶乘问题吧:
#include<stdio.h>
int mail(int n)
{
if(n==2)
return 1;
if(n==1)
return 0;
return (n-1)*mail(n-1);
}

void main()
{ int total, n;
printf("\n\nPlease input n:");
scanf("%d",&n);
total=mail(n);
printf("\nThe result is %d\n",total);
}
jerrypig 2003-04-06
  • 打赏
  • 举报
回复
如果只是计算全部投错的个数,是没有必要用递归的吧?

不管是否全部投错,共有Pn-n中投法,其中只有一种事正确的,因此,投错的方法共有Pn-n减1种,其中部分投错的情况是P2-n,P3-n,P4-n至P(n-1)-n的累加,因此,全部投错的方法就是它们的差。

这是我的想法,可能又错误或者是考虑不对的细节,希望大家指正:)
谢谢

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧