非常好的dp,锻炼思维

f[i][j][k] 前i行有j列放1,k列放2

#include<bits/stdc++.h>
#define int long long
#define rep(i,x,y) for(register int i=x;i<=y;i++)
#define dec(i,x,y) for(register int i=x;i>=y;i--)
using namespace std;
const int mod=999983;
const int N=150;
inline int read(){int x=0,f=1;char ch=getchar();while(!isdigit(ch)){if(ch=='-')f=-1;ch=getchar();}while(isdigit(ch)){x=(x<<1)+(x<<3)+(ch^48);ch=getchar();}return x*f;}
int f[N][N][N],n,m;
inline int C(int x){return x*(x-1)/2;}
signed main(){freopen("count.in","r",stdin);freopen("count.out","w",stdout);n=read();m=read();f[0][0][0]=1;for(int i=0;i<n;i++)for(int j=0;j<=m;j++)for(int k=0;j+k<=m;k++){//不放 f[i+1][j][k]=(f[i+1][j][k]+f[i][j][k])%mod;//放1在0if(m-j-k>=1) f[i+1][j+1][k]=(f[i+1][j+1][k]+f[i][j][k]*(m-j-k))%mod;//放1在1if(j>=1) f[i+1][j-1][k+1]=(f[i+1][j-1][k+1]+f[i][j][k]*j)%mod; //放2在0在0 if(m-j-k>=2) f[i+1][j+2][k]=(f[i+1][j+2][k]+f[i][j][k]*C(m-j-k))%mod;//放2在0在1if(m-j-k>=1&&j>=1) f[i+1][j][k+1]=(f[i+1][j][k+1]+f[i][j][k]*(m-j-k)*j)%mod;//放2在1在1if(j>=2) f[i+1][j-2][k+2]=(f[i+1][j-2][k+2]+f[i][j][k]*C(j))%mod;}int ans=0;for(int i=0;i<=m;i++)for(int j=0;i+j<=m;j++)ans=(ans+f[n][i][j])%mod;printf("%lld\n",ans);return 0;
}

转载于:https://www.cnblogs.com/asdic/p/9744573.html

luogu 2051 中国象棋相关推荐

  1. BZOJ 1801 [Ahoi2009]中国象棋(线性动规)(洛谷P2051)

    题意:就是在n*m的格子中放"炮"(中国象棋中的棋子)问有多少种放法,使得没有任意的两个炮相互攻击 思路:我们很容易的得到一列或者一行中最多放下两个炮(我也只能得到这些了,满脑子状 ...

  2. 使用Qt开发中国象棋(一):概述

    最近看了一些关于中国象棋的实现书籍,里面讲述了如何开发一个完整的中国象棋游戏,看了里面的内容,感觉里面的内容特别巧妙的,比如书中提到了用位棋盘来表示中国象棋的棋盘以及一些精妙的走棋算法.基于这些,自己 ...

  3. 中国象棋_通过设计国际象棋游戏来了解策略模式

    中国象棋 今天,我们将借助一个示例来尝试了解策略模式. 我们将考虑的示例是国际象棋游戏. 这里的目的是解释策略模式,而不是构建全面的国际象棋游戏解决方案. 策略模式:策略模式被称为行为模式–用于管理对 ...

  4. java象棋无框架版_Java版中国象棋

    /* *中国象棋Java *作者:yanick *源文件:Chess.java *最后修改时间:2006-11-1 *添加功能:实现了当前棋局的保存 *Chess.java */ import jav ...

  5. P2051 中国象棋

    P2051 中国象棋 题目描述 这次小可可想解决的难题和中国象棋有关,在一个N行M列的棋盘上,让你放若干个炮(可以是0个),使得没有一个炮可以攻击到另一个炮,请问有多少种放置方法.大家肯定很清楚,在中 ...

  6. AHOI2009 中国象棋

    题目链接 题目描述 在一个N行M列的棋盘上,让你放若干个炮(可以是0个),使得没有一个炮可以攻击到另一个炮,请问有多少种放置方法. (在中国象棋中炮的行走方式是:一个炮攻击到另一个炮,当且仅当它们在同 ...

  7. 团队-团队编程项目中国象棋-项目进度

    代码地址:https://gitee.com/zhanghongjian666/ZhongGuoXiangQi/blob/master/zgxq.html 当前进度画出了棋盘和棋子并且可以进行人人对战 ...

  8. 中国象棋程序的设计与实现(四)-- 一次“流产”的写书计划

    2019独角兽企业重金招聘Python工程师标准>>> 1.写书缘由 2010年写完中国象棋程序(代码)后,我想认真完善下这个项目. 在写代码过程中,我已经加入了大量的注释. 写完后 ...

  9. VC++源码分析 - 中国象棋源码分析

    下载自 http://www.newxing.com/Code/VC/game/1750.html 运行界面如下: 看下类图: 资源: 主对话框: 源码说明: 本人机对弈程序采用了多种搜索算法.以下是 ...

最新文章

  1. centos 学习日记 文件默认权限:umaks
  2. 实现HttpHandlerFactory的方法
  3. git show查看本地文件的修改部分,git diff 如何比较文件,git grep 搜索
  4. java多线程模拟龟兔赛跑
  5. HTML阅读位置,script在HTML文档中位置
  6. WordPress忘记密码的5种解决方法
  7. mysql获取逻辑日志_Mysql 逻辑架构图及日志系统
  8. canvas合成海报所遇问题及解决方案总结
  9. canvas转盘抽奖的实现(二)
  10. Mysql Data type
  11. 毕设题目:Matlab机器人路径规划
  12. Linux内核分析(四)----进程管理|网络子系统|虚拟文件系统|驱动简介
  13. 2.4 GHz ZigBee网络处理器CC2530ZNP(TI)
  14. c语言oj质数还是合数,求数据帝帮忙测试一下代码,已被南洋理工大学的oj搞蒙.....
  15. XJOI 7623 maoge数
  16. 计算机一级学科大学排名,大学计算机排名(一级学科)
  17. web前端高级实战 - 实现京东淘宝商品详细放大镜效果
  18. websocket的属性readyState
  19. 公司注册地址要注意,小心被拉“黑”,征信受影响
  20. R语言中的igraph包绘制网络图

热门文章

  1. 《数据结构与抽象:Java语言描述(原书第4版)》一2.2.1 可变大小数组
  2. Python2的Json反序列化工具
  3. Unicode编码完全探究(三)之联通乱码
  4. java 连接数据库之一个完整的函数
  5. MATLAB   xls数据读写
  6. 3.5.5 CSMA/CA 协议
  7. Vivado中IP核生成文件
  8. edge新版 能够正则式_Python爬虫七 数据提取之正则
  9. Excel数组公式从入门到精通之精通篇
  10. nginx could not build the server_names_hash 解决方法