2025年南京理工大学计算机考研复试机试真题
2025年南京理工大学计算机考研复试上机真题
历年南京理工大学计算机考研复试上机真题
历年南京理工大学计算机考研复试机试真题
更多学校完整题目开源地址:https://gitcode.com/u014339447/pgcode
百度一下pgcode即可查看,输入 “学校名称” 即可筛选该校历年机试真题,包括真题、ac代码、解题思路、视频讲解。
紧急支援-南京理工大学
题目描述
紧急支援,你有一个直升机,可以飞过连续k kk条路(也可以中间停飞),但只能飞一次且所需时间固定2 × h 2 \times h2×h,给出相邻城市之间步行需要的时间a ( 1 ) a(1)a(1)~a ( n − 1 ) a(n-1)a(n−1)。
现在要求出从城市1 11走到城市n nn(即线性1 11~n nn) 最少时间。
输入格式
第一行输入n nn和k kk以及h hh,表示有n nn个城市和可以连续飞k kk个城市,0 ≤ k ≤ n − 1 0 \leq k \leq n-10≤k≤n−1。
第二行输入n − 1 n-1n−1个数,表示从起点开始相邻城市步行需要的时间
输入样例
5 2 1 3 6 2 4输出样例
8#include<bits/stdc++.h>usingnamespacestd;intmain(){intn,k,h,x=0;cin>>n>>k>>h;inth2=2*h;ints[100005];// 固定大小避免问题// 读取所有步行时间并计算总时间for(inti=0;i<n-1;i++){cin>>s[i];x+=s[i];// 先计算总步行时间}// 如果k=0,不能飞,直接输出总时间if(k==0){cout<<x;return0;}// 找出连续k条路的最大步行时间intmax_walk=0;// 最大步行时间intflag=0;// 记录从哪开始飞// 遍历所有可能的飞行起点for(inti=0;i<=n-1-k;i++){// i最大到n-1-kintsum=0;// 计算从i开始的连续k条路的步行时间for(intj=0;j<k;j++){sum+=s[i+j];}// 如果这个和比之前找到的最大值大,更新if(sum>max_walk){max_walk=sum;flag=i;}}// 判断飞行是否节省时间if(max_walk>h2){// 重新计算总时间:飞行前步行 + 飞行 + 飞行后步行x=0;// 飞行前的步行for(inti=0;i<flag;i++){x+=s[i];}// 飞行x+=h2;// 飞行后的步行for(inti=flag+k;i<n-1;i++){x+=s[i];}}// 如果飞行不节省时间,x已经是总步行时间cout<<x;return0;}AQIP 操作-南京理工大学
题目描述
给定一个字符串以及几个操作。
$ A $ 操作后面跟一个字符 $ b $ 表示在字符串后面插入这个字符。
$ I $ 操作后面跟两个字符 $ b $, $ c $ 表示在字符串的第 $ b $ 个位置插入字符 $ c $。
$ Q $ 操作后面跟一个字符 $ b $ 表示查询字符串中字符 $ b $ 的数量并输出。
$ P $ 操作表示输出整个字符串,每个字符中间用空格隔开。
输入格式
第一行输入一行字符串
第二行输入一个整数 $ m $,表示有 $ m $ 次操作
接下来 $ m $ 行输入操作指令
输出格式
如题
输入样例
abcde 4 A x I 3 a Q a P输出样例
2 a b a c d e ximportjava.util.Scanner;importjava.util.*;publicclassMain{publicstaticvoidmain(String[]args){Scannerin=newScanner(System.in);Strings=in.nextLine();intn=s.length();char[]c=s.toCharArray();List<Character>list=newArrayList<>();for(inti=0;i<n;i++){list.add(c[i]);}intm=Integer.parseInt(in.nextLine());charop='A';for(inti=0;i<m;i++){Stringline=in.nextLine();op=line.charAt(0);if(op=='A'){charop1=line.charAt(2);list.add(op1);}elseif(op=='I'){String[]parts=line.split("\\s+");intx=Integer.parseInt(parts[1]);charop1=line.charAt(4);list.add(x-1,op1);}elseif(op=='Q'){charop1=line.charAt(2);System.out.println(Collections.frequency(list,op1));}else{intlen=list.size();for(intj=0;j<len;j++){System.out.print(list.get(j)+" ");if(j==len-1){System.out.println("");}}}}}}括号匹配二-南京理工大学
题目描述
苗苗今天刚刚学会使用括号,不过他分不清小括号,中括号,大括号和尖括号,不知道怎么使用这些括号,请帮助他判断括号使用是否正确。
输入格式
输入只包含′ < ′ '<'′<′,′ ( ′ '('′(′,′ { ′ '\{'′{′,′ [ ′ '['′[′,′ > ′ '>'′>′,′ ) ′ ')'′)′,′ } ′ '\}'′}′,′ ] ′ ']'′]′的字符串(长度不超过10000 1000010000)
输出格式
对应每行输入,如果输入的字符串中的括号正确匹配则输出y e s yesyes,否则输出n o nono。
输入样例
(){}输出样例
yesimportjava.util.Scanner;importjava.util.Stack;publicclassMain{publicstaticvoidmain(String[]args){Scannerin=newScanner(System.in);Strings=in.nextLine();intn=s.length();char[]c=s.toCharArray();Stack<Character>stack=newStack<>();chartemp='{';booleanres=true;for(inti=0;i<n;i++){if(c[i]=='<'||c[i]=='('||c[i]=='{'||c[i]=='['){stack.push(c[i]);}elseif(c[i]=='>'||c[i]==')'||c[i]=='}'||c[i]==']'){if(stack.isEmpty()){res=false;break;}temp=stack.pop();if((c[i]=='>'&&temp!='<')||(c[i]==']'&&temp!='[')||(c[i]=='}'&&temp!='{')||(c[i]==')'&&temp!='(')){res=false;break;}}}if(!stack.isEmpty()){res=false;}if(res==true){System.out.println("yes");}else{System.out.println("no");}}}求阶乘-南京理工大学
题目描述
给出一个数n nn( 1 ≤ n ≤ 13 ) (1 \leq n \leq 13)(1≤n≤13),求出它的阶乘。
输入格式
输入只有一个整数n nn。
输出格式
对于输入的n nn,求出它的阶乘并输出。
输入样例
3输出样例
6#include<iostream>usingnamespacestd;longlongans=1ll;typedeflonglongLL;intmain(){intn;cin>>n;for(inti=n;i>=1;i--)ans=(LL)ans*i;cout<<ans<<endl;return0;}n nn,求出它的阶乘并输出。
输入样例
3输出样例
6#include<iostream>usingnamespacestd;longlongans=1ll;typedeflonglongLL;intmain(){intn;cin>>n;for(inti=n;i>=1;i--)ans=(LL)ans*i;cout<<ans<<endl;return0;}