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

题解:AcWing 271 杨老师的照相排列

本文分享的必刷题目是从蓝桥云课、洛谷、AcWing等知名刷题平台精心挑选而来并结合各平台提供的算法标签和难度等级进行了系统分类。题目涵盖了从基础到进阶的多种算法和数据结构旨在为不同阶段的编程学习者提供一条清晰、平稳的学习提升路径。欢迎大家订阅我的专栏算法题解C与Python实现附上汇总贴算法竞赛备考冲刺必刷题C | 汇总【题目来源】AcWing271. 杨老师的照相排列 - AcWing题库【题目描述】有N NN个学生合影站成左端对齐的k kk排每排分别有N 1 , N 2 , … , N k N_1,N_2,…,N_kN1​,N2​,…,Nk​个人。 (N 1 ≥ N 2 ≥ … ≥ N k N_1≥N_2≥…≥N_kN1​≥N2​≥…≥Nk​)第1 11排站在最后边第k kk排站在最前边。学生的身高互不相同把他们从高到低依次标记为1 , 2 , … , N 1,2,…,N1,2,…,N。在合影时要求每一排从左到右身高递减每一列从后到前身高也递减。问一共有多少种安排合影位置的方案下面的一排三角矩阵给出了当N 6 , k 3 , N 1 3 , N 2 2 , N 3 1 N6,k3,N13,N22,N31N6,k3,N13,N22,N31时的全部16 1616种合影方案。注意身高最高的是1 11最低的是6 66。123 123 124 124 125 125 126 126 134 134 135 135 136 136 145 146 45 46 35 36 34 36 34 35 25 26 24 26 24 25 26 25 6 5 6 5 6 4 5 4 6 5 6 4 5 4 3 3【输入】输入包含多组测试数据。每组数据两行第一行包含一个整数k kk表示总排数。第二行包含k kk个整数表示从后向前每排的具体人数。当输入k 0 k0k0的数据时表示输入终止且该数据无需处理。【输出】每组测试数据输出一个答案表示不同安排的数量。每个答案占一行。【输入样例】1 30 5 1 1 1 1 1 3 3 2 1 4 5 3 3 1 5 6 5 4 3 2 2 15 15 0【输出样例】1 1 16 4158 141892608 9694845【算法标签】#线性DP-一维【代码详解】#includebits/stdc.husingnamespacestd;#defineintlonglongconstintN35;intn,k;// n: 每列人数k: 未使用ints[N],f[N][N][N][N][N];// s: 每列的人数上限f: DP数组记录方案数signedmain(){while(cinn,n)// 循环读入n直到n为0{// if (n0) break; // 被注释掉的结束条件memset(s,0,sizeof(s));// 清空s数组memset(f,0,sizeof(f));// 清空f数组for(inti0;in;i)// 读入每列的人数上限cins[i];f[1][0][0][0][0]1;// 初始状态第一列1人其余列0人for(inta1;as[0];a)// 枚举第一列人数for(intb0;bmin(a,s[1]);b)// 枚举第二列人数且不超过第一列人数for(intc0;cmin(b,s[2]);c)// 枚举第三列人数且不超过第二列人数for(intd0;dmin(c,s[3]);d)// 枚举第四列人数且不超过第三列人数for(inte0;emin(d,s[4]);e)// 枚举第五列人数且不超过第四列人数{// 从a-1,b,c,d,e状态增加一个人到第一列if(a1a-1b)f[a][b][c][d][e]f[a-1][b][c][d][e];// 从a,b-1,c,d,e状态增加一个人到第二列if(b0b-1c)f[a][b][c][d][e]f[a][b-1][c][d][e];// 从a,b,c-1,d,e状态增加一个人到第三列if(c0c-1d)f[a][b][c][d][e]f[a][b][c-1][d][e];// 从a,b,c,d-1,e状态增加一个人到第四列if(d0d-1e)f[a][b][c][d][e]f[a][b][c][d-1][e];// 从a,b,c,d,e-1状态增加一个人到第五列if(e0)f[a][b][c][d][e]f[a][b][c][d][e-1];}coutf[s[0]][s[1]][s[2]][s[3]][s[4]]endl;// 输出最终方案数}return0;}【运行结果】1 30 1 5 1 1 1 1 1 1 3 3 2 1 16 4 5 3 3 1 4158 5 6 5 4 3 2 141892608 2 15 15 9694845 0
http://www.zskr.cn/news/1366023.html

相关文章:

  • 题解:AcWing 1054 股票买卖
  • 机器学习发现统计物理对偶性:从伊辛模型到拓扑线方法
  • 交叉验证方差分析:从数学原理到工程实践
  • 如何为旧款iPhone降级:使用Legacy-iOS-Kit完整指南
  • 缺失值插补如何影响模型可解释性:预测精度与Shapley值忠实度的权衡
  • 基于遗传算法与物理先验的宇宙学线性功率谱可解释模拟器构建
  • 143、运动控制中的电源设计:纹波抑制与滤波
  • GTA5线上小助手:免费开源工具让你的洛圣都冒险更轻松高效
  • DLSS Swapper终极指南:如何一键管理游戏DLSS版本提升50%性能
  • AI加速器安全架构:硬件级可信计算与FlexHEG技术解析
  • 告别图片混乱!这个.NET工具让你在千万图库中秒级找到相似图片
  • 黄金回收变现2026北京实地测评,资质齐全门店当场结算靠谱省心 - 薛定谔的梨花猫
  • 3分钟掌握tracetcp:穿透防火墙的TCP路由追踪神器
  • FFXIV TexTools 终极指南:3步打造你的专属艾欧泽亚冒险
  • DDD领域驱动设计实战指南:从理论到落地的完整解析
  • MAA明日方舟助手:一键解放双手的智能游戏伴侣终极指南
  • 5分钟免费制作专业LRC歌词:零门槛歌词制作工具完全指南
  • KNN算法入门后下一步?用Python和Pandas手把手构建你的第一个“相似推荐”系统
  • WebPlotDigitizer终极指南:3步从任何图表中提取精准数据的免费开源工具
  • DCT 变换:揭秘那个让一张图片“瘦身“百倍的数学魔法
  • 长期使用Taotoken Token Plan套餐在项目开发成本控制上的实际感受
  • k6 Studio如何提升性能测试效率与协作效能
  • 大麦网自动抢票神器:90%成功率的一键抢票终极指南
  • AzurLaneAutoScript:碧蓝航线全自动脚本终极指南,解放双手的智能游戏管家
  • 5分钟快速上手Switch大气层破解系统:免费提升游戏性能的完整指南
  • 范畴论与拓扑斯:为神经网络构建形式化语义与逻辑框架
  • 智能文献翻译革命:如何让Zotero研究效率提升300%
  • 3个高效技巧突破百度云限速:Python脚本实现全速下载的完整指南
  • 长期使用 Taotoken 聚合服务对项目月度账单清晰度与预测性的改善
  • XHS-Downloader:小红书下载神器,5分钟搞定无水印批量下载