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

有正整数1和2,缺失的第一个正整数是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;
}

帝国国王科技大学上机题解(二)相关推荐

  1. 帝国国王科技大学上机题解

    1.变位词问题(18分) 问题描述 所谓变位词,是指组成各个单词的字母完全相同,只是字母排列的顺序不同.例如:silent和listen就是一对变位词.给出两个字符串,要求判断其是否互为变位词,若是, ...

  2. 帝国cms万能通用api二次开发核心包使用说明

    简介 帝国cms万能通用api二次开发核心包是一款可以用地对帝国cms进行二次开发,可进行开发微信小程序.百度小程序.支付宝小程序.轻应用.苹果ios安卓android.其他营销插件的二次开发核心包. ...

  3. 计算机在材料科学中的应用上机二,计算机在材料科学中的应用-上机实验二.doc...

    计算机在材料科学中的应用-上机实验二 实验二 Office使用技巧 ? 1 Word工具栏的增删与了解其主要作用 (1) ? 把"常用"和"格式"工具栏打开(一 ...

  4. 阿卜杜拉国王科技大学的计算机,阿卜杜拉国王科技大学,沙特国王大学开设专业。...

    大家听说过阿卜杜拉国王科技大学吗?去过沙特的知情人解惑,或是... 这个学校很好,但kaust是世界上录取率最低的高校之一.阿卜杜拉国王科技大学(kaust)成立于2009年9月,是沙特首所国际性.研 ...

  5. 阿卜杜拉国王科技大学的计算机,阿卜杜拉国王科技大学(KAUST)探索奖学金项目...

    阿卜杜拉国王科技大学(KAUST)探索奖学金项目通知 2008年申请截止日期为5月11日 KAUST探索奖学金是为在全球范围内研究领域有卓越表现的本科生设置的,该奖学金主要用于资助本科毕业后有意向在K ...

  6. Java内部类与异常类(上机实践二)

    Java内部类与异常类(上机实践二) 实践一 内部购物卷 手机专卖店为了促销自己的产品,决定发行内部购物券,但其他商场不能发行该购物券.编写一个 MobileShop 类(模拟手机专卖店),该类中有一 ...

  7. 876计算机大纲,2018华中科技大学876 物理化学二考试大纲

    2018华中科技大学876 物理化学二考试大纲 华中科技大学硕士入学<物理化学(工科)华中科技大学硕士入学<物理化学(工科)>考试大纲>考试大纲(科目代码科目代码:)第一部分第 ...

  8. c语言已知24有8个因子,C语言上机考试题二(2页)-原创力文档

    C语言上机考试题二 (60分) 对下面的各题编写函数完成其操作,并在主函数中调用它输出结果 (用函数指针调用的加5分).要求对任何一道题不看任何书在25分钟 内完成程序设计,运行无误. 1. 德国数学 ...

  9. 华为上机题-二师弟的星际加法

    华为上机题-二师弟的星际加法 1 问题描述 我是网络公司的一名普通程序员,英文名Steven,发音比较像"师弟",自从入职培训自我介绍后,大家就称我为"二师弟" ...

最新文章

  1. bzoj1588[HNOI2002]营业额统计
  2. 数据库分页和使用jstl标签替换分页的jsp代码
  3. d3.js 获取当前像素坐标_Cesium开发入门篇 | 06坐标系及坐标变换
  4. win7 企业版MAK神key win7企业版激活码
  5. python异常类型大全
  6. JSP综合开发实例——清爽夏日九宫格(DIV+CSS布局)
  7. 高效能人士的七个习惯-第二章-阅读
  8. 当下既是上天赐予的礼物 ——《心灵奇旅》影评
  9. HHUOJ 1001 汽水瓶 (水题)
  10. 【MySQL篇】第三篇——表的操作
  11. python做乘法运算定律_《乘法运算定律》(一)教学设计
  12. 商业智能助力 银行业数据“挖金”
  13. java des 中文乱码_网络上DesUtil.java关于汉字加密解密出现乱码的问题
  14. 收藏本站——添加到浏览器收藏夹
  15. python猜字游戏猜三次_python 猜字游戏
  16. 14、TWS API和IB中的账户和投资组合数据
  17. 解决SecureFX中文乱码的方法
  18. 网站关键词优化的细节【长尾关键词的挖掘与筛选】
  19. 四川省部分地区经济发展水平的统计分析
  20. [WallProxy] WallProxy

热门文章

  1. Python【王者荣耀】全英雄无水印皮肤
  2. Win10系统无法识别USB设备的处理方法
  3. [BJOI2019]勘破神机
  4. 随机梯度下降法 SGD
  5. iOS开发 viewWillAppear:(BOOL)animated真机调试的时候不执行了怎么办
  6. 浅谈网络营销推广策略-方式方法利用
  7. 机器学习中的F1-score
  8. 极客日报:微信正式宣布开放外部链接;iPhone13预购开启导致苹果官网崩了;特斯拉将向车主提供新版 FSD
  9. Apache Curator操作zookeeper的API使用
  10. 小程序游戏开发三个引擎用哪个好呢 Cocos,Egret,Laya?