做网站和软件有区别吗网络开发公司简介
2026/4/18 17:00:57 网站建设 项目流程
做网站和软件有区别吗,网络开发公司简介,加盟餐饮网站建设,明港seo公司2025年复旦大学计算机考研复试机试真题 2025年复旦大学计算机考研复试上机真题 历年复旦大学计算机考研复试上机真题 历年复旦大学计算机考研复试机试真题 更多学校完整题目开源地址#xff1a;https://gitcode.com/u014339447/pgcode 百度一下pgcode 即可查看#xff0…2025年复旦大学计算机考研复试机试真题2025年复旦大学计算机考研复试上机真题历年复旦大学计算机考研复试上机真题历年复旦大学计算机考研复试机试真题更多学校完整题目开源地址https://gitcode.com/u014339447/pgcode百度一下pgcode即可查看输入 “学校名称” 即可筛选该校历年机试真题包括真题、ac代码、解题思路、视频讲解。树的子结构-复旦大学题目描述输入两棵二叉树A AA和B BB判断B BB是不是A AA的子结构。(约定空树不是任意一个树的子结构)。B BB是A AA的子结构即A AA中有出现和B BB相同的结构和节点值。输入格式两行第一行是树A AA的层序遍历序列第二行是树B BB的层序遍历序列。使用null表示空节点。输出格式若B BB是A AA的子结构输出true否则输出false。输入样例3 4 5 1 2 null null null null null null 4 1 null null null输出样例true解释树A AA的层序遍历序列为3 4 5 1 2 null null null null null null表示如下二叉树3 / \ 4 5 / \ 1 2树B BB的层序遍历序列为4 1 null null null表示如下二叉树4 / 1树B BB是树A AA的子结构因此输出true。#includeiostream#includevector#includestring#includesstreamusingnamespacestd;structTreeNode{intval;TreeNode*left;TreeNode*right;TreeNode(intx):val(x),left(nullptr),right(nullptr){}};vectorintsplitString(strings){vectorintv;stringstreamss(s);string item;while(ssitem){if(itemnull)v.push_back(-1);elsev.push_back(stoi(item));}returnv;}TreeNode*build(vectorintnums,inti){if(inums.size()||nums[i]-1)returnnullptr;TreeNode*rootnewTreeNode(nums[i]);root-leftbuild(nums,i*21);root-rightbuild(nums,i*22);returnroot;}boolwhethersame(TreeNode*rootA,TreeNode*rootB){if(rootAnullptrrootBnullptr)returntrue;elseif(rootAnullptrrootB!nullptr)returnfalse;elseif(rootA!nullptrrootBnullptr)returntrue;elseif(rootA-val!rootB-val)returnfalse;returnwhethersame(rootA-left,rootB-left)whethersame(rootA-right,rootB-right);}boolisSubStructure(TreeNode*A,TreeNode*B){// 约定空树不是任意树的子结构if(Anullptr||Bnullptr){returnfalse;}returnwhethersame(A,B)||isSubStructure(A-left,B)||isSubStructure(A-right,B);}intmain(){string A,B;getline(cin,A);getline(cin,B);vectorintnumAsplitString(A);vectorintnumBsplitString(B);TreeNode*rootAbuild(numA,0);TreeNode*rootBbuild(numB,0);boolflagisSubStructure(rootA,rootB);if(flag)couttrueendl;elsecoutfalseendl;return0;}数的间隙-复旦大学题目描述给一个序列a 1 a_1a1​到a n a_nan​和一个d dd。a n a_nan​数组排序后后一个数减去前一个数的值称之为数的间隙要求数的间隙均大于d dd。请问最多能从a n a_nan​中选出多少满足条件的数字。输入样例5 2 1 3 6 10 15输出样例4#includeiostream#includecstring#includealgorithm#includevectorusingnamespacestd;intn,d;intmaxNumbersDP(vectorinta,intd){sort(a.begin(),a.end());vectorintdp(n,1);intmax_len1;for(inti1;in;i){for(intj0;ji;j){if(a[i]-a[j]d){dp[i]max(dp[i],dp[j]1);}}max_lenmax(max_len,dp[i]);}returnmax_len;}intmain(){cinnd;vectorinta(n);for(inti0;in;i){cina[i];}coutmaxNumbersDP(a,d)endl;return0;}高尔夫比赛的森林砍树-复旦大学题目描述你被请来给一个要举办高尔夫比赛的树林砍树。树林由一个m × n m \times nm×n的矩阵表示 在这个矩阵中0 00表示障碍无法触碰1 11表示地面可以行走比1 11大的数 表示有树的单元格可以行走数值表示树的高度每一步你都可以向上、下、左、右四个方向之一移动一个单位如果你站的地方有一棵树那么你可以决定是否要砍倒它。你需要按照树的高度从低向高砍掉所有的树每砍过一颗树该单元格的值变为1 11即变为地面。你将从( 0 , 0 ) (0, 0)(0,0)点开始工作返回你砍完所有树需要走的最小步数。如果你无法砍完所有的树返回− 1 -1−1。可以保证的是没有两棵树的高度是相同的并且你至少需要砍倒一棵树。输入格式第一行两个整数分别是m mm和n nn。接下来有m mm行每行n nn个数代表矩阵的行。输入样例3 3 1 2 3 0 0 4 7 6 5输出样例6importjava.util.Scanner;publicclassMain{staticinta,b;staticint[][]c;publicstaticvoidmain(String[]args){ScannerinnewScanner(System.in);ain.nextInt();bin.nextInt();in.nextLine();cnewint[a][b];for(inti0;ia;i){for(intj0;jb;j){c[i][j]in.nextInt();}in.nextLine();}dfs(c,0,0);intcount0;booleanimpfalse;for(inti0;ia;i){for(intj0;jb;j){if(c[i][j]1){imptrue;}if(c[i][j]-1){count;}}}if(imp){System.out.printf(-1);}else{System.out.printf(%d,count-1);}}privatestaticvoiddfs(int[][]c,inti,intj){if(i0||j0||ia||jb||c[i][j]0||c[i][j]-1){return;}else{c[i][j]-1;dfs(c,i1,j);dfs(c,i-1,j);dfs(c,i,j1);dfs(c,i,j-1);}}}层次遍历-复旦大学题目描述给定一个二叉搜索树的先序遍历 先序遍历先序遍历求其层次遍历 层次遍历层次遍历。输入格式第一行输入n nn表示树中有n nn个节点。接下来一行输入n nn个数t r e e [ i ] tree[i]tree[i]表示树的先序遍历 先序遍历先序遍历。n 100000 n 100000n100000t r e e [ i ] tree[i]tree[i]各不相同但不一定为1 11-n nn的全排列且一定可以构成二叉搜索树输出格式输出1 11行n nn个数表示层次遍历 层次遍历层次遍历的结果输入样例4 3 1 2 4输出样例3 1 4 2#includeiostream#includevector#includequeue#includeclimits// 用于 INT_MIN 和 INT_MAXusingnamespacestd;// 定义二叉树节点结构structTreeNode{intval;// 节点值TreeNode*left;// 左子节点TreeNode*right;// 右子节点TreeNode(intx):val(x),left(NULL),right(NULL){}// 构造函数};// 根据先序遍历重建二叉搜索树TreeNode*buildTree(vectorintpreorder,intindex,intminVal,intmaxVal){// 如果已经遍历完所有节点返回空指针if(indexpreorder.size())returnnullptr;// 获取当前节点的值intvalpreorder[index];// 如果当前值不在合法范围内说明当前节点不属于当前子树返回空指针if(valminVal||valmaxVal)returnnullptr;// 创建当前节点TreeNode*rootnewTreeNode(val);index;// 移动到下一个节点// 递归构建左子树左子树的值范围是 (minVal, val)root-leftbuildTree(preorder,index,minVal,val);// 递归构建右子树右子树的值范围是 (val, maxVal)root-rightbuildTree(preorder,index,val,maxVal);returnroot;}// 层次遍历vectorintlevelOrder(TreeNode*root){vectorintresult;// 存储层次遍历的结果if(!root)returnresult;// 如果树为空直接返回空结果queueTreeNode*q;// 使用队列辅助层次遍历q.push(root);// 将根节点入队while(!q.empty()){TreeNode*nodeq.front();// 取出队首节点q.pop();// 弹出队首节点result.push_back(node-val);// 将节点值加入结果// 如果左子节点存在将其入队if(node-left)q.push(node-left);// 如果右子节点存在将其入队if(node-right)q.push(node-right);}returnresult;}intmain(){intn;cinn;// 输入节点数量vectorintpreorder(n);// 存储先序遍历结果for(inti0;in;i){cinpreorder[i];// 输入先序遍历的每个节点值}intindex0;// 用于跟踪当前处理的先序遍历中的节点// 重建二叉搜索树初始范围为 (INT_MIN, INT_MAX)TreeNode*rootbuildTree(preorder,index,INT_MIN,INT_MAX);// 进行层次遍历vectorintresultlevelOrder(root);// 输出结果for(inti0;iresult.size();i){if(i0)cout ;// 每个节点值之间用空格分隔coutresult[i];}coutendl;return0;}

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询