南京大学机试试题合集

2024-09-06 00:36
文章标签 合集 试试 南京大学

本文主要是介绍南京大学机试试题合集,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

🍰🍰🍰hello宝子们,今天我们来练习南京大学的机试题目,这些题目的缺点就是太老了,都是18或19年的题,大家就练练手。加油!fighting!( •̀ ω •́ )✧

🍩1161 二叉树遍历

#include<bits/stdc++.h>
using namespace std;
string s;
int len;
typedef struct node{char data;struct node *lchild,*rchild;
}*bitree;bitree create(bitree &t){if(len>=s.size()) return NULL;char data=s[len];len++;if(data!='#'){t=(bitree)malloc(sizeof(bitree));t->data=data;t->lchild=NULL;t->rchild=NULL;t->lchild=create(t->lchild);t->rchild=create(t->rchild);}return t;
}
void inorder(bitree &t){if(t!=NULL){inorder(t->lchild);cout<<t->data<<" ";inorder(t->rchild);}
}
int main(){while(cin>>s){len=0;bitree t;bitree tree=create(t);inorder(tree);cout<<endl;}return 0;
}

🍩1692 Distinct Subsequences🍦

//摘自N诺用户:csYfZhang
#include<bits/stdc++.h>
using namespace std;
#define inf 0x3f3f3f3f
#define MAX 1005
#define MOD 1000000007
int main(){long long dp[MAX][MAX];//表示 T 前 i 字符串可以由 S 前 j 字符串组成的最多个数int n; cin>>n;while(n--){string s,t;cin>>s>>t;s=' '+s;t=' '+t;int l1=s.size(),l2=t.size();for(int i=1;i<l2;i++)for(int j=1;j<l1;j++) dp[i][j]=0;int lens=s.size(),lent=t.size();for(int i=0;i<lens;i++) dp[0][i]=1;for(int i=1;i<lent;i++){for(int j=i;j<lens;j++){if(t[i]==s[j])dp[i][j]=(dp[i-1][j-1]+dp[i][j-1])%MOD;//dp[i][j-1]类似于不选s[j]能凑成t[1...i]的个数,dp[i-1][j-1]则为选s[j]能凑成t[1...i]的个数else dp[i][j]=dp[i][j-1];//当 S[j] != T[i] , dp[i][j] = dp[i][j-1](不想等,只能不选s[j])}}cout<<dp[l2-1][l1-1]<<endl;}return 0;
}

🍩1690 Stepping Numbers🍦

//摘自N诺用户:Ashionial 
#include <bits/stdc++.h>
using namespace std;
const long long N = 3e8 + 10;
int main()
{vector<long long> num={10,12,21,23,32,34,43,45,54,56,65,67,76,78,87,89,98};int n=num.size();queue<long long> q;for(int i=0;i<n;i++) q.push(num[i]);//预处理,直接求出来所有满足的数while(!q.empty()){long long cur=q.front();q.pop();if(cur>=N) break;int end=cur%10;//最后一位数if(end>=1){long long tmp=cur*10+end-1;num.push_back(tmp);q.push(tmp);}if(end<=8){long long tmp=cur*10+end+1;num.push_back(tmp);q.push(tmp);}}long long T;cin>>T;while(T--){long long l,r;cin>>l>>r;long long s=lower_bound(num.begin(),num.end(),l)-num.begin();//lower_bound找到区间第一个大于等于l的数的位置long long e=lower_bound(num.begin(),num.end(),r)-num.begin();cout<<e-s+(num[e]==r?1:0)<<endl;}return 0;
}

🍩1691 Nodes from the Root🍦

//摘自N诺用户:lianghl 
#include <bits/stdc++.h>
using namespace std;
#define inf 0x3f3f3f3fvoid solve(int n,int y,vector<vector<int>> edges){vector<vector<int>> g(n,vector<int>(n,-1));int r=-inf,l=inf;for(auto e:edges){int u=e[0],v=e[1],w=e[2];g[u][v]=w;r=max(r,w);l=min(l,w);}auto check=[&](int thr)->bool{int cnt=1;vector<int> q {0};vector<bool> vis(n);vis[0]=true;while(!q.empty()){vector<int> p(q);q.clear();for(auto x:p){for(int y=0;y<n;y++){if (!vis[y]&&g[x][y]>=thr) {cnt++;vis[y]=true;q.push_back(y);}}}}return cnt<=y;};auto bisect=[&](int i,int j){while(i<=j){int mid=(i+j)/2;if(!check(mid)) i=mid+1;else j=mid-1;}return i;}; cout<<bisect(l, r)<<endl;
}int main() {int T; cin>>T;while(T--){int n, y; cin >> n >> y;vector<vector<int>> edges(n-1);for(int i = 0; i < n-1; i++) {int u, v, w;cin >> u >> v >> w;edges[i] = {u, v, w};}solve(n, y, edges);}
}

🍩1895 子序列

#include<bits/stdc++.h>
using namespace std;
int main(){string a,b;int n,ans=0;string res;cin>>a>>n;int lena=a.size(),lenb;int dp[2005][2005]={0};while(n--){for(int i=0;i<2005;i++)for(int j=0;j<2005;j++)dp[i][j]=0;cin>>b;lenb=b.size();for(int i=1;i<=lena;i++){for(int j=1;j<=lenb;j++){if(a[i-1]==b[j-1]) dp[i][j]=dp[i-1][j-1]+1;else dp[i][j]=max(dp[i-1][j],dp[i][j-1]);}}if(ans<dp[lena][lenb]){ans=dp[lena][lenb];res=b;}}cout<<res<<endl<<ans;return 0;
}

🍩1894 奶牛位置🍦

//摘自N诺用户:cccclr
//自己填的注释,有不懂的地方欢迎评论区留言
#include<bits/stdc++.h>
using namespace std;
const int N=1e5+5;
int dp[N];//dp[i]记录到当前位置i需要花费的最少时间
int path[N];//path[i]记录从哪走到了i
int main(){memset(dp,0,sizeof(dp));memset(path,0,sizeof(path));int s,t;cin>>s>>t;vector<int> a;if(s>0){dp[s-1]=1;//从s到s-1要走1步path[s-1]=s;//从s走到了s-1}dp[s]=0;//从s到s不用走path[s]=-1;//-1表示到头了dp[s+1]=1;//从s到s+1要走1步path[s-1]=s;//从s走到了s-1for(int i=s+2;i<=t+1;i++){int pos=i/2;if(i%2==0){//可以从pos的位置经过一次*2到达if(dp[pos]<dp[i-1]){//这里在对比从pos位置*2花费时间更少还是从前一个位置后移一位花费时间更少dp[i]=dp[pos]+1;//通过一步*2从pos到达当前位置ipath[i]=pos;//从pos走到了iwhile(dp[i-1]>dp[i]+1){//这是松弛的步骤:就是说,这种情况下从当前位置i到前边一个位置用时比之前记录的方法更短dp[i-1]=dp[i]+1;path[i-1]=i;//从i走到了i-1}}else{//从前一个位置后移一位花费时间更少dp[i]=dp[i-1]+1;path[i]=i-1;//从i-1走到了i}}else{//不能通过*2到达,那么当前位置只能通过从前一个位置向后走一步到达dp[i]=dp[i-1]+1;//考虑从后一个位置向前走一步到达会报错path[i]=i-1;//从i-1走到了i}}cout<<dp[t]<<endl;//输出最少花费时间for(int i=t;path[i]!=-1;){//逆着回去找所有的路径a.push_back(i);i=path[i];}a.push_back(s);for(int i=a.size()-1;i>=0;i--){cout<<a[i];if(i>0) cout<<"->";}return 0;
}

创作不易,点个赞吧~感兴趣的宝子欢迎关注本专栏和我们一起学习机试内容哦~

宝子们学习辛苦啦,休息下,我们下部分再见!👋( •̀ ω •́ )✧ ~

大家还想看哪个学校的机试题目,评论区告诉我~~~

这篇关于南京大学机试试题合集的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1140503

相关文章

【专题】2024飞行汽车技术全景报告合集PDF分享(附原数据表)

原文链接: https://tecdat.cn/?p=37628 6月16日,小鹏汇天旅航者X2在北京大兴国际机场临空经济区完成首飞,这也是小鹏汇天的产品在京津冀地区进行的首次飞行。小鹏汇天方面还表示,公司准备量产,并计划今年四季度开启预售小鹏汇天分体式飞行汽车,探索分体式飞行汽车城际通勤。阅读原文,获取专题报告合集全文,解锁文末271份飞行汽车相关行业研究报告。 据悉,业内人士对飞行汽车行业

EasyPlayer.js网页H5 Web js播放器能力合集

最近遇到一个需求,要求做一款播放器,发现能力上跟EasyPlayer.js基本一致,满足要求: 需求 功性能 分类 需求描述 功能 预览 分屏模式 单分屏(单屏/全屏) 多分屏(2*2) 多分屏(3*3) 多分屏(4*4) 播放控制 播放(单个或全部) 暂停(暂停时展示最后一帧画面) 停止(单个或全部) 声音控制(开关/音量调节) 主辅码流切换 辅助功能 屏

C++语法知识点合集:11.模板

文章目录 一、非类型模板参数1.非类型模板参数的基本形式2.指针作为非类型模板参数3.引用作为非类型模板参数4.非类型模板参数的限制和陷阱:5.几个问题 二、模板的特化1.概念2.函数模板特化3.类模板特化(1)全特化(2)偏特化(3)类模板特化应用示例 三、模板分离编译1.概念2.模板的分离编译 模版总结 一、非类型模板参数 模板参数分类类型形参与非类型形参 非类型模板

Linux性能分析工具合集

Linux性能分析工具合集 工具合集主要包含以下各种工具,对于了解Linux系统结构、网络结构、内核层次具有一定的帮助。 Linux Performance Observability ToolsLinux Static Performance ToolsLinux Performance Benchmark ToolsLinux Performance Tuning ToolsLinux

JVM合集

序言: 1.什么是JVM? JVM就是将javac编译后的.class字节码文件翻译为操作系统能执行的机器指令翻译过程: 前端编译:生成.class文件就是前端编译后端编译:通过jvm解释(或即时编译或AOT)执行.class文件时跨平台的,jvm并不是跨平台的通过javap进行反编译 2.java文件是怎么变成.class文件的? 属于前端编译 3..class文件解读 采用1

C语言程序与设计第四版课后习题 - 1~8章大合集

前言 本文章是一个大合集,按照课后习题的命名方式命名,方便寻找,只需要在目录上点相对应的题号即可在这里插入图片描述 第一章课后习题 1.1 编写一个C程序 题目概述: 请参照本章例题,编写一个C程序,输出一下信息: *****************************Very good!***************************** 代码实现: #define

手机扬声器音量总是不够大?试试“扬声器助推器”吧

手机的扬声器音量总是不够大,尤其是在嘈杂的环境中,音乐和视频的声音总是不太清晰。直到我发现了这款“扬声器助推器”,我的手机音质瞬间提升了好几个档次。 软件简介: “扬声器助推器”利用先进的音频处理技术,能够提高手机扬声器的音量,让声音更加清晰响亮。此外,还可以设置最大允许增强量,避免音量过大损坏扬声器。 版本特点: 提升音量效果显著,音质清晰。可以自定义最大增强量,保护扬声器。 使用体

《黑神话:悟空》专题合集MOD/修改器/壁纸/音乐/CG剧情

《黑神话:悟空》专题合集」 链接:https://pan.quark.cn/s/d67857f4e308 包含内容: 《黑神话:悟空》MOD合集 《黑神话:悟空》修改器(风灵月影) 《黑神话:悟空》壁纸合集 《黑神话:悟空》3小时CG完整剧情合集 4K120帧最高画质!国语 简中字幕 附:4K 结尾动画合集 ​​​国语 简中字幕 《黑神话:悟空》主题曲 《黑神话

【鼠鼠学AI代码合集#5】线性代数

在前面的例子中,我们已经讨论了标量的概念,并展示了如何使用代码对标量进行基本的算术运算。接下来,我将进一步说明该过程,并解释每一步的实现。 标量(Scalar)的基本操作 标量是只有一个元素的数值。它可以是整数、浮点数等。通过下面的 Python 代码,我们可以很容易地进行标量的加法、乘法、除法和指数运算。 代码实现: import torch# 定义两个标量x = torch.tens

diffusion model 合集

diffusion model 整理 DDPM: 前向一步到位,从数据集里的图片加噪声,根据随机到的 t t t 决定混合的比例,反向要慢慢迭代,DDPM是用了1000步迭代。模型的输入是带噪声图和 t,t 先生成embedding后,用通道和的方式加到每一层中间去: 训练过程是对每个样本分配一个随机的t,采样一个高斯噪声 ϵ \epsilon ϵ,然后根据 t 对图片和噪声进行混合,将加噪