当前位置: 首页 > news >正文

【蓝桥每日一题]-动态规划 (保姆级教程 篇12)#照相排列

这次是动态规划最后一期了,感谢大家一直以来的观看,以后就进入新的篇章了

  

目录

题目:照相排列

  思路:  

  

题目:照相排列

    

    

思路:  


首先记录状态f[a][b][c][d][e]表示每排如此人数下对应的方案数,然后发现第一排人数大于第二排时,第一排最后一个人可有可无,那就好做了。

   
故f[a,bcde]=f[a-1,bcde],同理其余排也如此转移,这样此状态的所有来源都知道了,即:f[abcde]=f[a-1]+f[b-1]+f[c-1]+f[d-1]+f[e-1]    
   

#include <bits/stdc++.h>  
using namespace std;
typedef long long LL;                                                                                          
const int N = 31;
int n;
LL f[N][N][N][N][N];
int main()
{while (cin>>n,n){int s[5] = {0};for (int i=0; i<n; i++) cin>>s[i];f[0][0][0][0][0]=1;for (int a=0; a<=s[0]; a++)for (int b=0; b<=min(a,s[1]); b++)for (int c=0; c<=min(b,s[2]); c++)for (int d=0; d<=min(c,s[3]); d++)for (int e=0; e<=min(d,s[4]); e++){LL &x = f[a][b][c][d][e];if (a&&a-1>=b) x+=f[a-1][b][c][d][e];if (b&&b-1>=c) x+=f[a][b-1][c][d][e];if (c&&c-1>=d) x+=f[a][b][c-1][d][e];if (d&&d-1>=e) x+=f[a][b][c][d-1][e];if (e) x += f[a][b][c][d][e-1];}cout <<f[s[0]][s[1]][s[2]][s[3]][s[4]]<< endl;}return 0;
}

各位宝程序员节快乐!

http://www.lryc.cn/news/204665.html

相关文章:

  • 纺织工厂数字孪生3D可视化管理平台,推动纺织产业数字化转型
  • 【七】SpringBoot为什么可以打成 jar包启动
  • 031-第三代软件开发-屏幕保护
  • Ubuntu 22.04 更新完内核重启卡在 grub 命令行解决办法
  • Stream流式处理
  • ROG STRIX GS-AX5400 使用笔记
  • 【刷题-PTA】堆栈模拟队列(代码+动态图解)
  • FileUpload控件上传文件时出现 不支持给定路径的格式.的解决方法
  • 这两天的一些碎碎念
  • Unity 最新DOTS系列之《Baking与Baker的详解》
  • 【Tensorflow 2.12 简单智能商城商品推荐系统搭建】
  • Unity 单例-接口模式
  • 【Java 进阶篇】Java XML解析:从入门到精通
  • 【图像配准】Canny边缘检测+模板配准红外可见光双路数据
  • 关于单机流程编排技术——docker compose安装使用的问题
  • Google Chrome的新“IP保护”功能将隐藏用户的IP地址
  • 做机器视觉工程师,苏州德创能不能去工作?
  • 交换机基础(二):VLAN 基础知识
  • 一个基于Vue3搭建的低代码数据可视化开发平台
  • 经验风险最小化与结构风险最小化:优化机器学习模型的两种方法
  • Java泛型中的问号是什么意思
  • 粤嵌实训医疗项目day02(Vue + SpringBoot)
  • 又是一年1024程序员日
  • acme.sh签发和部署ZeroSSL泛域名证书
  • Calibre拾遗:FDI (Foreign Database Interface)系统简介
  • 记一次渗透测试事件
  • AIGC笔记--基于DDPM实现图片生成
  • 三十七、【进阶】SQL的explain
  • 【Python】取火柴小游戏(巴什博弈)
  • 030-第三代软件开发-密码输入框