题目:求由A。B。C构成的有序传中长度为n。且每一个B前面的A的个数不少于当前B,每一个C前面的B的个数不少于当前C的个数。

分析:dp,求排列组合数。

考虑二维的状况:

假设 A>=B 则在 F(A-1。B)后面放上A,在F(A。B-1)后面放上B。

F(A。B)= F(A,B-1)+ F(A-1,B) { A > B }。

当 A = B 时 也满足  F(A,B)= F(A,B-1)+ F(A-1。B)= F(A。B-1)+ 0;

所以有: F(A。B)= F(A,B-1)+ F(A-1,B) { A >= B }。

考虑三维的状况:

F(A,B,C)= F(A-1,B,C)+ F(A,B-1,C-1)+ F(A,B。C-1) {A >= B >= C}。

说明:(2011-09-19 01:32)。

#include <stdio.h>
#include <string.h> char ABC[ 61 ][ 61 ][ 61 ][ 82 ]; int main()
{
memset( ABC, 0, sizeof( ABC ) );
for ( int A = 1 ; A <= 60 ; ++ A )
ABC[ A ][ 0 ][ 0 ][ 0 ] = 1; for ( int A = 1 ; A <= 60 ; ++ A )
for ( int B = 1 ; B <= 60 ; ++ B )
if ( A >= B )
for ( int k = 0 ; k <= 80 ; ++ k ) {
ABC[ A ][ B ][ 0 ][ k ] += ABC[ A-1 ][ B ][ 0 ][ k ] + ABC[ A ][ B-1 ][ 0 ][ k ];
if ( ABC[ A ][ B ][ 0 ][ k ] > 9 ) {
ABC[ A ][ B ][ 0 ][ k+1 ] += ABC[ A ][ B ][ 0 ][ k ]/10;
ABC[ A ][ B ][ 0 ][ k ] %= 10;
}
} for ( int A = 1 ; A <= 60 ; ++ A )
for ( int B = 1 ; B <= 60 ; ++ B )
for ( int C = 1 ; C <= 60 ; ++ C )
if ( A >= B && B >= C )
for ( int k = 0 ; k <= 80 ; ++ k ) {
ABC[ A ][ B ][ C ][ k ] += ABC[ A-1 ][ B ][ C ][ k ] + ABC[ A ][ B-1 ][ C ][ k ] + ABC[ A ][ B ][ C-1 ][ k ];
if ( ABC[ A ][ B ][ C ][ k ] > 9 ) {
ABC[ A ][ B ][ C ][ k+1 ] += ABC[ A ][ B ][ C ][ k ]/10;
ABC[ A ][ B ][ C ][ k ] %= 10;
}
} int n;
while ( scanf("%d",&n) != EOF ) {
int start = 80;
while ( !ABC[ n ][ n ][ n ][ start ] && start > 0 ) -- start;
while ( start >= 0 )
printf("%d",ABC[ n ][ n ][ n ][ start -- ]);
printf("\n\n");
}
return 0;
}

最新文章

  1. Vue.js 动态绑定class
  2. 使用ueditor中的setContent() 时经常报innerHtml错误(笔记)
  3. MySQL不能插入中文字符及中文字符乱码问题
  4. 与众不同 windows phone (42) - 8.0 相机和照片: 通过 PhotoCaptureDevice 捕获照片
  5. XSS获取cookie
  6. Android内存机制分析1——了解Android堆和栈
  7. 新手!SDK Manager里找不到API安装的选项怎么办?
  8. Axure初体验:简单交互、通过按钮切换图片
  9. Alexandra and Prime Numbers(思维)
  10. js面向对象二级菜单
  11. android双待手机获取每一张SIM卡的imei
  12. nginx的location配置详解
  13. [Swift]LeetCode658. 找到 K 个最接近的元素 | Find K Closest Elements
  14. oracle 表 库实例 空间
  15. VScode 中 vue文件template中不能使用tab补齐标签
  16. 近视BFC
  17. adb install与pm install 区别
  18. python 类的介绍实例
  19. javascript中NAN undefined 和null
  20. OSS 实例

热门文章

  1. 马士兵hadoop第一课:虚拟机搭建和安装hadoop及启动(转)
  2. BZOJ 4077 Messenger
  3. Java后端WebSocket的Tomcat实现 html5 WebSocket 实时聊天
  4. AC日记——Dishonest Sellers Codeforces 779c
  5. (1)Unity3d界面、入门
  6. tomcat7.0.55配置单向和双向HTTPS连接
  7. Codeforces 323 B Tournament-graph
  8. Maven更新POM中的JDK版本(比如更新为JDK1.8)
  9. 文件夹浏览(SHBrowseForFolder)
  10. 【redis】4.spring boot集成redis,实现数据缓存