题目

一个人写了n封不同的信及相应的n个不同的信封,他把这n封信都装错了信封,问都装错信封的装法有多少种?

解体思路

用A、B、C……表示写着n位友人名字的信封,a、b、c……表示n份相应的写好的信纸。把错装的总数为记作f(n)。假设把a错装进B里了(意味着b不能装入B了),包含着这个错误的一切错装法分两类:

(1)b装入A里,这时每种错装的其余部分都与A、B、a、b 无关,应有f(n-2)种错装法。

(2)b装入A、B之外的一个信封,这时的装信工作实际是把(除a之外的) 的信纸b、c……装入(除B外的)n-1个信封A、C……,显然这时装错的方法有f(n-1)种。

总之在a装入B的错误之下,共有错装法f(n-2)+f(n-1)种。a装入C,装入D……的n-2种错误之下,同样都有f(n-2)+f(n-1)种错装法,因此:

f(n)=(n-1)(f(n-1)+f(n-2))

程序代码

hdu1465

#include "stdio.h"

__int64 f(int n);
int main()
{
int n;
__int64 a;
while(scanf("%d",&n)!=EOF)
{
a = f(n);
printf("%I64d\n", a);
}
return 0;
}
__int64 f(int n)
{
if (n == 1) return 0;
if (n == 2) return 1;
if (n > 2) return (n-1)*(f(n-1)+f(n-2));
}

#include "stdio.h"

long long int f(int n);
int main()
{
int n;
long long int a;
while(scanf("%d",&n)!=EOF)
{
a = f(n);
printf("%lld\n", a);
}
return 0;
}
long long int f(int n)
{
if (n == 1) return 0;
if (n == 2) return 1;
if (n > 2) return (n-1)*(f(n-1)+f(n-2));
}

另外两种解法

#include <stdio.h>
int main()
{
int n,i,a[50];
scanf("%d",&n);
for(i=1;i<=n;i++)
{
if(i==1)
a[i]=0;
if(i==2)
a[i]=1;
else
a[i]=(i-1)*(a[i-1]+a[i-2]);
}
printf("%d\n",a[n]);
return 0;
}

#include <stdio.h>
int main()
{
int n,i,a[50];
a[1]=0;
a[2]=1;
for(i=3;i<50;i++)
a[i]=(i-1)*(a[i-1]+a[i-2]); scanf("%d",&n);
printf("%d\n",a[n]);
return 0;
}

最新文章

  1. iOS开发
  2. Unity 4.x Asset Bundle 重名
  3. 奇怪的Js时间计算方法,跨多个月后出现1天的误差
  4. JVM GC (一)
  5. Less (一种动态样式语言)
  6. 关于LINUX权限-bash: ./startup.sh: Permission denied
  7. 【Qt】Qt国际化(系统文本-QMessageBox按钮、QLineEdit右键菜单等)【转】
  8. Mysql分表和分区的区别
  9. Microsoft Project 2010 简体中文专业版 + 永久激活密钥
  10. Android studio dabao
  11. 社交系统ThinkSNS+ APP更新至V0.8.3---新增打赏、用户认证
  12. 机器学习入门 - Google机器学习速成课程 - 笔记汇总
  13. db2性能优化
  14. 前端UI框架总结
  15. c++ std::function
  16. ABP-Zero模块
  17. 转载《浅析MVC框架中View层的优雅设计及实例》
  18. jQuery插件开发之datalist
  19. 使用nginx反向代理时,如何正确获取到用户的真实ip
  20. C/C++——库函数strcpy和strdup比较

热门文章

  1. 读书笔记3(Teamwork)
  2. python3下最全的wordcloud用法,附源代码及相关文件
  3. 关于tree节点的刷新
  4. loj2059 「TJOI / HEOI2016」字符串
  5. JS空数组的判断
  6. Leetcode 542.01矩阵
  7. 【Appnium+C#+Winform自动化测试系列】一、获取本机连接的设备、启动多个Appnium和获取本机启动的Appnium
  8. Solr安装 win系统
  9. web项目中各种路径的获取(复制,为以后好找资源)
  10. BZOJ 3674 可持久化并查集加强版(主席树变形)