zoj 2711 - Regular Words
2024-09-04 14:47:26
题目:求由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;
}
最新文章
- Vue.js 动态绑定class
- 使用ueditor中的setContent() 时经常报innerHtml错误(笔记)
- MySQL不能插入中文字符及中文字符乱码问题
- 与众不同 windows phone (42) - 8.0 相机和照片: 通过 PhotoCaptureDevice 捕获照片
- XSS获取cookie
- Android内存机制分析1——了解Android堆和栈
- 新手!SDK Manager里找不到API安装的选项怎么办?
- Axure初体验:简单交互、通过按钮切换图片
- Alexandra and Prime Numbers(思维)
- js面向对象二级菜单
- android双待手机获取每一张SIM卡的imei
- nginx的location配置详解
- [Swift]LeetCode658. 找到 K 个最接近的元素 | Find K Closest Elements
- oracle 表 库实例 空间
- VScode 中 vue文件template中不能使用tab补齐标签
- 近视BFC
- adb install与pm install 区别
- python 类的介绍实例
- javascript中NAN undefined 和null
- OSS 实例
热门文章
- 马士兵hadoop第一课:虚拟机搭建和安装hadoop及启动(转)
- BZOJ 4077 Messenger
- Java后端WebSocket的Tomcat实现 html5 WebSocket 实时聊天
- AC日记——Dishonest Sellers Codeforces 779c
- (1)Unity3d界面、入门
- tomcat7.0.55配置单向和双向HTTPS连接
- Codeforces 323 B Tournament-graph
- Maven更新POM中的JDK版本(比如更新为JDK1.8)
- 文件夹浏览(SHBrowseForFolder)
- 【redis】4.spring boot集成redis,实现数据缓存