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

DHU复试 Day16

DHU复试 Day16

文章目录

    • DHU复试 Day16
    • Day16
    • 一、基础题库
    • T71 发牌
    • T72 数学金子塔----(动态规划)
    • T75 魔方阵
    • T56 最少拦截系统---()
    • T45 回文数
    • T41 环---(对环的操作等效于循环左移操作)
    • T38 树-------(unorderd_set)

Day16

今天学习的内容


一、基础题库

T71 发牌


#include<bits/stdc++.h>usingnamespacestd;intmain(){intn;vector<vector<int>>a(4,vector<int>(13,0));//发牌for(inti=0;i<4;i++){for(intj=0;j<13;j++){a[i][j]=(i+4*j)%13;}}while(cin>>n){for(intj=0;j<13;j++){inti=n-1;intsum=i+4*j;if(j>0)cout<<" ";if(sum/13==0)cout<<"c"<<" "<<a[i][j];if(sum/13==1)cout<<"d"<<" "<<a[i][j];if(sum/13==2)cout<<"h"<<" "<<a[i][j];if(sum/13==3)cout<<"s"<<" "<<a[i][j];}cout<<endl;}return0;}


T72 数学金子塔----(动态规划)


#include<bits/stdc++.h>usingnamespacestd;intmain(){intn;cin>>n;vector<vector<int>>a(n,vector<int>(n,0));for(inti=0;i<n;i++){for(intj=0;j<i+1;j++)cin>>a[i][j];}//用动态规划的思想进行求解vector<vector<int>>dp=a;//注意边界,直接从倒数第二行出发,因为倒数第一行无正下方或右下方//自下而上for(inti=n-2;i>=0;i--){for(intj=0;j<i+1;j++){//每一层的数据等于自身+两种选择的最大值dp[i][j]+=max(dp[i+1][j],dp[i+1][j+1]);}}//顶部就是最大值cout<<dp[0][0]<<endl;return0;}

总结:对于动态规划问题,一般是要选择最优解,或者是最大解。那么就要涉及到选择问题,每一步都要选择符合题设要求,直至到最后。对于这道题而言,可以从上往下dp,也可以从下往上dp。但是从下往上涉及的边界条件比较少,容易理解。可以想象成金子塔倒着,则每次每行都要寻找到最大值,一直到最顶层。


T75 魔方阵


#include<bits/stdc++.h>usingnamespacestd;intmain(){intn;while(cin>>n){vector<vector<int>>a(n+1,vector<int>(n+1,0));//放1a[1][(n+1)/2]=1;inti=1,j=(n+1)/2;intcnt=2;while(cnt<=n*n){//规则2intnew_i=i-1;intnew_j=j+1;//规则3 如果i为1 则newi为0if(new_i==0)new_i=n;//规则4 如果j为n则newi为n+1if(new_j==n+1)new_j=1;//规则5 由于上面已经判断了第一行 第n列if(a[new_i][new_j]==0){i=new_i;j=new_j;}else{i++;}a[i][j]=cnt;cnt++;}for(inti=1;i<=n;i++){for(intj=1;j<=n;j++){if(j>1)cout<<" ";cout<<a[i][j];}cout<<endl;}cout<<endl;}return0;}

总结:按照题目的要求,来写条件,i,j表示的是原来的节点,而new_i、new_j是新的节点,从2开始,新节点都要按照规则2的要求处理,只是有一些特殊的点,需要按照规则3、4处理,规则5其实只有新节点已存在的时候,因为后续的一个条件,包括了规则3、4. 等把所有规则都过一遍后,在更新i 、j。同时更新数组的值。

T56 最少拦截系统—()

#include<bits/stdc++.h>usingnamespacestd;intmain(){intt;cin>>t;while(t--){intn;cin>>n;vector<int>a(n,0);for(inti=0;i<n;i++)cin>>a[i];vector<vector<int>>d(n+1,vector<int>());//存放导弹系统 声明有多少行,每行为空intcnt=1;d[1].push_back(a[0]);for(inti=1;i<n;i++){inttemp=a[i];//遍历系统boolflag=false;for(intk=1;k<=cnt;k++){//如果小于第k套系统的末尾,就写入该系统if(temp<d[k].back()){d[k].push_back(temp);flag=true;break;}}//如果所有的系统都没有找到合适的,就重新开一个系统,并写入if(!flag){cnt++;d[cnt].push_back(temp);}}cout<<cnt<<endl;}return0;}

T45 回文数

#include<bits/stdc++.h>usingnamespacestd;//求逆序数intNixu(intn){intnum=0;while(n!=0){num=num*10+n%10;n/=10;}returnnum;}//判断是不是回文数boolIshuiwen(intn){inta=Nixu(n);returna==n;}intmain(){intn;while(cin>>n){if(n==0)break;inta=n,b=Nixu(a);while(1){intsum=a+b;cout<<a<<"+"<<b<<"="<<sum<<endl;//如果和是回文数,则退出if(Ishuiwen(sum))break;a=sum;b=Nixu(a);}}return0;}

T41 环—(对环的操作等效于循环左移操作)

#include<bits/stdc++.h>usingnamespacestd;//循环左移位voidremove(vector<int>&a){inttemp=a[0];for(inti=0;i<a.size()-1;i++){a[i]=a[i+1];}a[a.size()-1]=temp;}intmain(){intn;cin>>n;vector<int>a(9);while(n--){intcnt=0;//记录有多少种方法for(inti=0;i<9;i++)cin>>a[i];//开始剪for(intj=0;j<9;j++){vector<int>temp=a;//暂时代替a数组for(intk=0;k<j;k++)remove(temp);//顺时针形成的数intnum1=0;for(inti=0;i<9;i++){num1=num1*10+temp[i];}//逆时针形成的数intnum2=0;for(inti=8;i>=0;i--){num2=num2*10+temp[i];}if(abs(num1-num2)%396==0)cnt++;}cout<<cnt<<endl;}return0;}

T38 树-------(unorderd_set)

#include<bits/stdc++.h>usingnamespacestd;intmain(){intl,m;while(cin>>l>>m){inttotal=l+1;//总共的树vector<int>removes;//储存需要移出的树for(inti=0;i<m;i++){intstart,end;cin>>start>>end;//将要移出的区域输入到数组中for(intx=start;x<=end;x++){//标记看x是否已经存在数组中boolflag=false;for(inti=0;i<removes.size();i++){if(x==removes[i]){flag=true;break;}}if(!flag)removes.push_back(x);}}cout<<total-removes.size()<<endl;}return0;}//时间复杂度比较高,容易超时
//unordered_set 的插入时间复杂度能达到o(1)#include<bits/stdc++.h>usingnamespacestd;intmain(){intl,m;while(cin>>l>>m){inttotal=l+1;//总共的树unordered_set<int>removes;//储存需要移出的树for(inti=0;i<m;i++){intstart,end;cin>>start>>end;//将要移出的区域输入到数组中for(intx=start;x<=end;x++){removes.insert(x);}}cout<<total-removes.size()<<endl;}return0;}
http://www.jsqmd.com/news/458173/

相关文章:

  • 上海徐汇区有哪些擅长老房翻新设计的
  • 解读2026年国外国际舞台灯光展会,企亮展览口碑如何 - 工业品网
  • 【CAM350】软件技巧---对比两份gerber 文件的差异(1)
  • 聊聊2026年大同朔州靠谱的钢结构厂推荐,哪家性价比高 - 工业设备
  • 支持推送IM即时通讯 uniapp+pc 自建音视频通话聊天软件-ym7K
  • 2026年房山老房翻新公司怎么选?五家高性价比服务商深度解析 - 品牌2026
  • 推荐一本最好的钱币评级最好的书
  • 擎策·知海全球专利数据库 技术赋能检索 让科技创新少走弯路
  • windows系统本地安装部署openclaw详细版教程(最细保姆版)!!!
  • OpenClaw部署全攻略:10分钟搞定专属AI助手,新手零踩坑(附避坑指南+进阶技巧)
  • 2026年Q1租车公司价格对比测评:谁才是性价之王? - 科技焦点
  • 分期乐购物额度回收避坑指南:可可收正规渠道亲测有效 - 可可收
  • 一站式搞定初稿 + 绘图 + 格式 + AI 率:paperxie 让本科毕业论文「一次成型」
  • 基于SpringBoot+Vue的本庄村果园预售系统管理系统设计与实现【Java+MySQL+MyBatis完整源码】
  • 2026年全国热门的真空电炉优质生产商,哪家性价比高 - 工业设备
  • 台阶仪vs.白光干涉:薄膜厚度测量技术选型指南
  • 剖析2026年铝型材厂家,看看哪家价格更实惠 - 工业品牌热点
  • 这份榜单够用!9个降AIGC工具测评:本科生降AI率必看攻略
  • 揭秘书匠策AI:毕业论文的“全能导航员”,让学术之路畅通无阻!
  • 服务超1000家客户、覆盖近30%义齿工厂,联泰科技迎来3D打印业务第二增长曲线
  • 效率革命:AI驱动柔性供应链与轻量化门店运营的双重突破
  • 麦好火加速企业级AI落地:去年内测 MaiHH Connect,今年开年内部全面推广部署 OpenClaw
  • 揭秘书匠策AI:毕业论文写作的“黑科技”助手,让学术之路畅通无阻!
  • linux学习笔记(磁盘管理)
  • moto razr 40 Ultra 外屏玩机攻略:教你添加应用,小屏也有大用处
  • 有没有真正免费的App分发平台?
  • 危废房十大品牌企业:专业保障安全存储
  • 日常出行中常用的导航二维码怎么制作?含9大应用场景分析
  • 专业的混流泵厂家
  • Flutter 组件 polylabel 的适配 鸿蒙Harmony 实战 - 驾驭高性能地图质心算法、实现鸿蒙端复杂多边形标注对齐与地理空间计算优化方案