帝国国王科技大学上机题解(二)

1.找到字符串中出现次数最少的字符

 

题目描写叙述

给定一个字符串(长度小于50

找到该字符串出现次数最少的字符

假设有两个字符出现次数同样,并且均出现最少。那么ASCII码小的字符优先

 

输入

输入为一行字符串。不含空格

输出

输出出现次数最少的字符


例子输入

rra3

333444abcd

例子输出

3

a


解题思路:

先将字符串内部依据字符顺序排序,然后遍历一遍。记录出现次数最小的(假设有多个次数最小的。选排序在最前的)。


代码:

#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;char a[105];int main()
{int len,i;while(cin>>a){len=strlen(a);sort(a,a+len);//cout<<a<<endl;int min=105;   //字符出现的最少次数赋初值char res;int p=1;for(i=len-2; i>=0; i--){if(a[i]==a[i+1])   //统计a[i+1]出现的次数p++;else{if(p<=min)     //更新出现次数最少的{min=p;res=a[i+1];}p=1;}}if(p<=min)     //推断a[0]{min=p;res=a[0];}cout<<res<<endl;}
}/*
rra3
333444abcd
1112234
11223344
*/


2.归并两个已排序的数组(数组长度在1-20之间)。将其归并成一个顺序的数组

 

注意:在输出时。最后一个数字后边要打印一个空格

 

输入

第一行给定測试用例的个数N。接下来两行数据为一组,每行的第一个数是一个整数,表示的是该行数组的大小。

输出

输出每一个測试用例的结果。每行数据为一行。注意:在输出时,最后一个数字后边要打印一个空格

 

例子输入

2

4 1 3 5 7

3 2 4 6

2 3 5

3 -1 2 3

例子输出

1 2 3 4 5 6 7 

-1 2 3 3 5


解题思路:

用两个指针遍历两个数组。每次输出小的。


代码:

#include<iostream>
using namespace std;int a[105];
int b[105];int main()
{int tes;int m,n;int i,j;while(cin>>tes){while(tes--){cin>>m;for(i=0; i<m; i++)cin>>a[i];cin>>n;for(i=0; i<n; i++)cin>>b[i];i=0,j=0;while(i<m&&j<n)  //两个数组里面用指针选小的{if(a[i]<b[j]){cout<<a[i]<<" ";i++;}else{cout<<b[j]<<" ";j++;}}while(i<m)  //a数组还有剩余{cout<<a[i]<<" ";i++;}while(j<n)  //b数组还有剩余{cout<<b[j]<<" ";j++;}cout<<endl;}}return 0;
}/*
2
4 1 3 5 7
3 2 4 6
2 3 5
3 -1 2 3
*/



3.推断二叉树的先序遍历序列

 

题目描写叙述

一种线性表示二叉树的方式是使用先序遍历序列,假设遇到非空节点。我们记录它的值,假设遇到空节点,我们用固定字符或者数字表示。比如用数字0表示

 

比如上边这样一颗二叉树,其先序遍历序列为“9 3 4 0 0 1 0 0 2 0 6 0 0”,当中0表示空节点。给出一个线性序列,推断这个序列是否为一个二叉树的先序遍历序列。

序列中每一个非空节点的值均为非0整数,0表示空节点。节点之间用空格隔开,节点个数不超过20

 

输入

输入一行序列。序列中每一个数字表示一个节点的值,非空节点的值均为非0整数,0代表空节点,节点之间用空格隔开,节点个数不超过20个。

 

输出

假设该序列是一个二叉树的先序遍历序列。输出一行“True,否则输出“False

 

例子输入

9 3 4 0 0 1 0 0 2 0 6 0 0

1 0

9 0 0 1

例子输出

True

False

False


解题思路:


首先一个二叉树必须是叶子节点个数等于枝干节点数+1

即数组里面0的个数等于非0个数+1。假设不满足。直接输出False。

然后依照先序建立二叉树的方法。记录建立二叉树总共用的节点。

假设

1)建立二叉树使用的节点数index等于数组里数的个数n,

2)数组里面0的个数等于非0个数+1。

那么输出True,否则输出False。


代码:

#include<iostream>
#include<cstring>
#define maxn 1005
using namespace std;char str[maxn];
int a[maxn];
int index;typedef struct node
{node *l;node *r;int val;
}*root;void createBiTree(root T)      //先序建立二叉树
{if(a[index] == 0){T = NULL;index++;}else{T = new node;T->val = a[index++];createBiTree(T->l);createBiTree(T->r);}
}int main()
{int len,i,n;while(gets(str)){n=0;int tmp,flag;tmp=flag=0;len=strlen(str);int cnt=0;    //记录叶子节点个数for(i=0; i<len; i++)   //将字符串处理成int数组保存在数组a中{if(str[i]=='-'){flag=1;}else if(str[i]==' '){if(flag)tmp=0-tmp;a[n]=tmp;if(a[n]==0)cnt++;n++;flag=0;tmp=0;}elsetmp=tmp*10+(str[i]-'0');}if(flag)tmp=0-tmp;a[n]=tmp;if(a[n]==0) cnt++;n++;if(cnt!=n-cnt+1)   //叶子节点必须等于枝干节点+1{cout<<"False"<<endl;continue;}index=0;root T;createBiTree(T);if(n==index)cout<<"True"<<endl;elsecout<<"False"<<endl;}return 0;
}/*
9 3 4 0 0 1 0 0 2 0 6 0 0
1 0
9 0 0 19 2 0 0 5 6 0 0 0
9 2 0 0 5 0 6 0 0
*/



4.最短路径和

 

题目描写叙述

输出一个大小为M×N的方格,每一个方格填满了非负整数。找到一条从左上角到右下角的路径,使得路径经过的全部方格内的值相加和最小

1 2 3

1 1 1

比如如上方格,从左上角開始先向下走,再向右走。得到的路径和最短。最短为1+1+1+1=4

 

注意:在随意时刻。你仅仅有向下移动或者向右移动。

 

输入

输入第一行为该方格的行数和列数。行数和列数不超过1000

接着输入数字矩阵

输出

输出最短路径和


例子输出

2 3

1 2 3

1 1 1

1 1

3

例子输出

4

3


解题思路:

在随意时刻。你仅仅有向下移动或者向右移动。

不论什么一个状态仅仅能从上方或者左方得到。

用二维数组a存储该方格。用dp[i][j]表示到达第i行第j列这个数的最小值。

1)dp[1][j]仅仅能从左方得到。dp[1][j]=dp[1][j-1]+a[1][j];

2) dp[i][1]仅仅能从上方得到。dp[i][1]=dp[i-1][1]+a[i][1];

3) dp[i][j](i>1,j>1)能够从左方和上方得到。状态转移方程为

dp[i][j] = min(dp[i-1][j] , dp[i][j-1]) +a[i][j]

最后输出dp[m][n]即为结果


代码:

#include<iostream>
#define maxn 1005
using namespace std;int a[maxn][maxn];
int dp[maxn][maxn];int mi(int p1,int p2)
{if(p1<p2) return p1;return p2;
}int main()
{int m,n;int i,j;while(cin>>m>>n){for(i=1; i<=m; i++)for(j=1; j<=n; j++)cin>>a[i][j];dp[0][1]=0;dp[1][0]=0;for(i=1; i<=m; i++)dp[i][1]=a[i][1]+dp[i-1][1];for(i=1; i<=n; i++)dp[1][i]=a[1][i]+dp[1][i-1];for(i=2; i<=m; i++){for(j=2; j<=n; j++){dp[i][j]=mi(dp[i-1][j],dp[i][j-1])+a[i][j];}}/*for(i=1;i<=m;i++){for(j=1;j<=n;j++){cout<<dp[i][j]<<" ";}cout<<endl;}*/cout<<dp[m][n]<<endl;}
}



5.找出一个缺失的正整数


描写叙述

给定一个未排序的数组,找出一个缺失的正整数

比如

数组 1 2 0

有正整数12。缺失的第一个正整数是3

 

输入

输入为一个未排序的整数数组。数组长度不超过1000000

输出

输出为整数数组中第一个缺失的正整数

 

例子输入

1 2 0

3 4 -1 1

例子输出

3

2


解题思路:

把全部的正正整数都映射到map里面。

然后从最小的正整数1開始找,假设没有被映射。便输出。然后结束。


代码:

#include<iostream>
#include<cstring>
#include<map>
using namespace std;char str[1005];
map <int,int> mq;int main()
{int len,i;while(gets(str)){mq.clear();int tmp,flag;tmp=flag=0;len=strlen(str);for(i=0; i<len; i++)   //将字符串处理成int数组保存在数组a中{if(str[i]=='-'){flag=1;}else if(str[i]==' '){if(!flag)    //负数不须要处理{mq[tmp]=1;}flag=0;tmp=0;}elsetmp=tmp*10+(str[i]-'0');}if(!flag)mq[tmp]=1;for(i=1;; i++){if(!mq[i]){cout<<i<<endl;break;}}}return 0;
}



本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/281035.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何在计算机上阅读漫画书

Reading and organizing a comic book collection on your computer is efficient and a lot of fun. Today we will look at a couple of free applications that allow you to read your favorite comic books on your computer. 在计算机上阅读和组织漫画集非常有效&#xf…

工业互联网平台实现路径

我国工业互联网平台建设虽然仍处于产业培育期&#xff0c;但是工业互联网平台也得到了初期的快速发展&#xff0c;得益于平台企业的积极投入和各地工业和信息化主管部门的大力推动&#xff0c;从平台建设推广的经验来看&#xff0c;下面谈一下个人认为传统制造企业平台战略比较…

psa name_Windows 10安全性PSA:启用自动商店更新

psa nameMicrosoft sometimes distributes important security updates through the Microsoft Store. That’s the lesson we’re learning in July 2020, when Microsoft sent an important update for Windows 10’s HEVC codecs not via Windows Update but via the Store.…

C# ListView 简单命令例子

编写工具常用到ListView控件&#xff0c;能简单列出选项&#xff0c;常用到流程校验显示。这里介绍简答显示&#xff0c;添加与删除功能。 1.添加表头&#xff0c;与显示。 this.listView1.Columns.Add("队列", 40, HorizontalAlignment.Left);this.listView1.Column…

手机照片丢失或误删如何恢复

手机照片丢失或误删如何恢复&#xff1f;我们每个人从刚出生就开始拍照片&#xff0c;一周岁照片、二周岁照片、三周岁照片等&#xff0c;因为照片可以记录我们从小到大的模样和变化。无意照片对我们每个人来说都很重要&#xff0c;如果手机突然坏以前的照片都找不到了怎么办呢…

C++学习笔记(二)——交换函数(swap)

这次我们要透过一个简单的函数swap深入理解函数传参的本质以及在C中如何选择传参方式。 先来看第一段程序&#xff1a; void swap(int x, int y) {int temp y;y x;x temp; } 通过main函数的调用&#xff0c;我们发现x,y并未实现交换&#xff1a; int main() {int x 1;int y…

大数据背后是个万亿市场

2014年的GDP中消费占比已经超过了50%&#xff0c;标志着中国经济正在向市场经济转型&#xff0c;消费占GDP50%&#xff0d;70%是中等发达国家向市场经济过渡的一个表现&#xff0c;未来中国经济增长最大的引擎应该来源于消费&#xff0c;特别是个人消费。中国正在经历经济结构调…

ipad iphone开发_如何将iPhone或iPad置于恢复模式

ipad iphone开发If your iDevice starts acting strangely and you’ve run through the gamut of normal troubleshooting fixes, Recovery Mode may be your answer. This lets you easily reset the device and re-install iOS using iTunes. 如果您的iDevice开始运行异常&a…

从三层架构说起,谈谈对历史项目的小改造

web development项目背景说明最近接手一个 “老” 项目的需求修改&#xff0c;项目整体基于 .net core 3.1 平台&#xff0c;以传统的三层架构为基础构建。了解需求后&#xff0c;逐步对原有项目框架进行大概的了解&#xff0c;主要是熟悉一些框架的开发规范&#xff0c;基本工…

C# message简单实现窗口间信息接收与发送

刚接触windows 不同程序 窗口消息传递&#xff0c;不理解IntPtr SendMessage(int hWnd, int msg, IntPtr wParam, IntPtr lParam)这函数怎么用&#xff1f;消息内容怎么传递过去&#xff0c;还遇到需要message结构体&#xff1f;IntPtr怎么用呢&#xff1f; 但实际只是用来传个…

在Kubernetes集群上部署和管理JFrog Artifactory

JFrog Artifactory是一个artifacts仓库管理平台&#xff0c;它支持所有的主流打包格式、构建工具和持续集成&#xff08;CI&#xff09;服务器。它将所有二进制内容保存在一个单一位置并提供一个接口&#xff0c;这使得用户在整个应用程序开发和交付过程中&#xff0c;能更易于…

已知思科ASA设备漏洞仍在其新版本中存在

近日&#xff0c;名为“Shadow Brokers(影子经纪人)”的黑客组织声称成功入侵了跟NSA相关的Equation Group(方程式组织)的计算机系统&#xff0c;并成功窃取到了大量的机密信息以及黑客工具。随后&#xff0c;“Shadow Brokers”黑客组织将60%的泄漏文件在网上进行了公布&#…

Yii Listview

转载于:https://www.cnblogs.com/xiong63/p/8546376.html

.NET 7 的 AOT 到底能不能杠反编译?

一&#xff1a;背景 1.讲故事在B站&#xff0c;公众号上发了一篇 AOT 的文章后&#xff0c;没想到反响还是挺大的&#xff0c;都称赞这个东西能抗反编译&#xff0c;可以让破解难度极大提高&#xff0c;可能有很多朋友对逆向不了解&#xff0c;以为用 ILSpy,Reflector,DnSpy 这…

google hdr+_更好的隐私权控制使Google+死了

google hdrEarlier this year, Google started a project to review third-party developer access to Google accounts through the use of APIs. It found a security breach surrounding Google, and is now shutting the service down, at least for consumers. 今年年初&a…

新0-Day漏洞或将给Linux桌面发行版带来浩劫

Linux 的各个发行版都一直强调安全及其相关元素&#xff0c;比如防火墙、渗透测试、沙盒、无痕上网和隐私等等&#xff0c;但事实上可能并没有想象中的那么安全。安全研究员 Chris Evans 公开了其发现的针对 Linux 桌面发行版的 0day 漏洞&#xff0c;利用特制的音频文件入侵 L…

一份详尽的利用 Kubeadm部署 Kubernetes 1.13.1 集群指北

2019独角兽企业重金招聘Python工程师标准>>> 概 述 Kubernetes集群的搭建方法其实有多种&#xff0c;比如我在之前的文章《利用K8S技术栈打造个人私有云&#xff08;连载之&#xff1a;K8S集群搭建&#xff09;》中使用的就是二进制的安装方法。虽然这种方法有利于我…

.NET性能优化-使用内存+磁盘混合缓存

我们回顾一下上一篇文章中的内容&#xff0c;有一个朋友问我这样一个问题&#xff1a;我的业务依赖一些数据&#xff0c;因为数据库访问慢&#xff0c;我把它放在 Redis 里面&#xff0c;不过还是太慢了&#xff0c;有什么其它的方案吗&#xff1f;其实这个问题比较简单的是吧&…

最小生成树详解

注&#xff1a;本文算法使用链式前向星数据结构实现。学习链接&#xff1a;链式前向星-学习笔记 一、Prim算法 普通prim算法模板&#xff1a; //用前向星录数据的时候记得把head初始化为-1 fill(dist,distLEN,MAX); memset(vis,0,sizeof vis); int ans0; dist[1]0; //如…

dropbox文件_Dropbox即将发布的扩展程序更新将添加更多文件编辑支持,包括Pixlr照片...

dropbox文件Dropbox is perhaps the best-known cloud storage platform for consumers, but it’s hoping to become something more. With an upcoming overhaul to its user tools, Dropbox will add more complex editing tools, in addition to what it already provides …