程序设计基础
课后一些习题的解答以及对例题的一些理解
Grausam
这个作者很懒,什么都没留下…
展开
-
Excel表列名称(力扣简单题)
Excel表列名称给你一个整数 columnNumber ,返回它在 Excel 表中相对应的列名称。例如:A -> 1B -> 2C -> 3…Z -> 26AA -> 27AB -> 28…示例 1:输入:columnNumber = 1输出:“A”示例 2:输入:columnNumber = 28输出:“AB”示例 3:输入:columnNumber = 701输出:“ZY”示例 4:输入:columnNumber = 21原创 2021-11-09 14:46:25 · 4345 阅读 · 0 评论 -
Excel 表列序号(力扣简单题)
Excel 表列序号给你一个字符串 columnTitle ,表示 Excel 表格中的列名称。返回该列名称对应的列序号。例如,A -> 1B -> 2C -> 3...Z -> 26AA -> 27AB -> 28 ...示例 1:输入: columnTitle = “A”输出: 1示例 2:输入: columnTitle = “AB”输出: 28示例 3:输入: columnTitle = “ZY”输出: 701示例 4:输原创 2021-11-09 14:28:07 · 4116 阅读 · 0 评论 -
题目 - 1052 花生问题
描述鲁宾逊先生有一只宠物猴,名叫多多。这天,他们两个正沿着乡间小路散步,突然发现路边的告示牌上贴着一张小小的纸条:“欢迎免费品尝我种的花生!”。鲁宾逊先生和多多都很开心,因为花生正是他们的最爱。在告示牌背后,路边真的有一块花生田,花生植株整齐地排列成矩形网格(如图1)。有经验的多多一眼就能看出,每棵花生植株下的花生有多少。例如在图2中的花生田里,只有位于(2, 5), (3, 7), (4, 2), (5, 4)的植株下长有花生,个数分别为13, 7, 15, 9。我们假定多多在每个单位时间内,可以做下原创 2021-11-04 20:26:48 · 542 阅读 · 1 评论 -
题目 - 重排空格
题目描述给你一个字符串 text,该字符串由若干被空格包围的单词组成。每个单词由一个或者多个小写英文字母组成,并且两个单词之间至少存在一个空格。请你重新排列空格,使每对相邻单词之间的空格数目都 相等 ,并尽可能 最大化 该数目。如果不能重新平均分配所有空格,请 将多余的空格放置在字符串末尾 ,这也意味着输出的字符串应当与原字符串的长度相等。关于输入一行由小写英文字母和空格组成的字符串。字符串长度不超过1000,至少包含一个单词。关于输出一行和原字符串长度相等的字符串。例子输入t原创 2021-11-04 16:41:51 · 335 阅读 · 0 评论 -
题目 - 小茗同学很方
描述n(n不超过1000)个有蛀牙的小朋友被老师组织集体去拔牙,但是排队的时候由于所有小朋友都害怕拔牙,所以没人主动排在前面。这时老师想了一个有趣的方法,所有小朋友排成一列,按照顺序进行编号(编号从1开始),并从1依次进行报数,数到m的小朋友去拔牙,然后后面的小朋友再从1开始报数,下一个数到m的小朋友去拔牙…依此循环往复。小茗同学既不想先去拔牙,也不想被留到最后再拔,于是他决定第k(k<=n)个去拔。请你帮小茗同学想想他应该排在第几个位置才能“如愿以偿”。关于输入n,m,k关于输出一个整数,原创 2021-11-04 15:56:34 · 591 阅读 · 0 评论 -
题目 - 换酒问题
题目描述小区便利店正在促销,用 a 个空酒瓶可以兑换一瓶新酒。你购入了 b 瓶酒。如果喝掉了酒瓶中的酒,那么酒瓶就会变成空的。请你计算最多能喝到多少瓶酒。关于输入用空格分开的两个整数,分别为a和b。1 < a <= 1000000000,0 <= b <= 1000000000.关于输出能喝到多少瓶酒。例子输入3 9例子输出13源码实现#include<iostream>using namespace std;int main() {原创 2021-11-04 15:54:11 · 235 阅读 · 0 评论 -
题目 - 小于当前数的数
题目描述给你一个数组 nums,对于其中每个元素 nums[i],请你统计数组中比它小的所有数字的数目。换而言之,对于每个 nums[i] 你必须计算出有效的 j 的数量,其中 j 满足 j != i 且 nums[j] < nums[i]。关于输入第一行是一个整数 n,表示数组大小。接下来 n 行,每行表示数组中的一个数。0 <= n <= 1000, 每个数都在int可以表示的范围内.关于输出n 行,每行代表数组中比它小的数的个数。如果没有要输出的数据,输出"None原创 2021-11-04 11:40:07 · 350 阅读 · 0 评论 -
n-gram串频统计
题目描述在文本分析中常用到n-gram串频统计方法,即,统计相邻的n 个单元(如单词、汉字、或者字符)在整个文本中出现的频率。假设有一个字符串,请以字符为单位按n-gram 统计长度为 n 的子串出现的频度,并输出最高频度以及频度最高的子串。设定所给的字符串不多于500个字符,且 1 < n <5。 如果有多个子串频度最高,则根据其在序列中第一次出现的次序输出多个,每行输出一个,如果最高频度不大于1,则输出 NO例如,n=3,所给的串是:abcdefabcd,则,所有的 3-gram是:a原创 2021-11-03 18:28:36 · 582 阅读 · 0 评论 -
题目 - 好人坏人
题目描述小朋友们在玩游戏:2k个小朋友围成一个圈,标号依次从1到2k,其中k个扮演好人,另k个扮演坏人。游戏规则如下:从第一个小孩开始报数,报到m时,第m个小孩被踢出,然后从下一个小孩开始,重复前面的过程,直到还剩下k个小孩,停止踢人。我们希望被踢出的都是坏人。已知前k个是好人,后k个是坏人,现在要求你对于每一个k,确定一个最小的正整数m,使得按游戏规则踢出的k个孩纸都是坏人。关于输入输入有多行,每行一个非负整数k,k不大于13。若输入为0,则标志着输入结束。关于输出对于每一个正整数k,输出最小的原创 2021-11-03 15:41:08 · 3415 阅读 · 0 评论 -
有趣的二进制
题目描述在每次操作仅能移动相邻的0和1的前提下,求把一个二进制数转换成另一个二进制数的最小操作数。关于输入输入共三行第一行为一个整数n (0 < n <= 200),代表二进制数的位数第二行为第一个二进制数的每一位第三行为第二个二进制数的每一位关于输出输出将第一个二进制数转换为第二个二进制数的最少操作数,如果答案不存在,则输出-1例子输入71 1 0 1 0 0 10 1 1 0 0 1 1例子输出4源码实现#include<iostream>#in原创 2021-10-28 18:47:12 · 816 阅读 · 0 评论 -
二维数组回形遍历的一道变式——回型加密-十进制版
题目描述使用者事先约定好矩阵的行数与列数,并且规定文本中仅有大写字母和空格。事先按照这样的方法对文本进行编码:空格 = 00A = 01B = 02C = 03…Y = 25Z = 26然后,然后按照回型遍历的方法,将每个字符对应编码的2位十进制数依次填入矩阵中,多出来的位置使用0补充。再按照正常遍历顺序将矩阵中的数字连起来,完成加密过程。关于输入第一行为两个整数R和C,中间用一个空格隔开,分别表示行数和列数,其中1≤R, C≤10第二行为一个只包含大写字母和空格的字符串,不会以空格原创 2021-10-28 15:46:08 · 434 阅读 · 0 评论 -
二维数组回形遍历
描述给定一个row行col列的整数数组array,要求从array[0][0]元素开始,按回形从外向内顺时针顺序遍历整个数组。如图所示:关于输入输入的第一行上有两个整数,依次为row和col。余下有row行,每行包含col个整数,构成一个二维整数数组。(注:输入的row和col保证0<row<100, 0<col<100)关于输出按遍历顺序输出每个整数。每个整数占一行。例子输入4 41 2 3 412 13 14 511 16 15 610 9 8原创 2021-10-22 14:06:07 · 772 阅读 · 1 评论 -
护林员盖房子
描述在一片保护林中,护林员想要盖一座房子来居住,但他不能砍伐任何树木。现在请你帮他计算:保护林中所能用来盖房子的矩形空地的最大面积。关于输入输入:保护林用一个二维矩阵来表示,长宽都不超过20(即<=20)。第一行是两个正整数m,n,表示矩阵有m行n列。然后是m行,每行n个整数,用1代表树木,用0表示空地。关于输出输出:一个正整数,表示保护林中能用来盖房子的最大矩形空地面积。例子输入4 50 1 0 1 10 1 0 0 10 0 0 0 00 1 1 0 1例子输出原创 2021-10-22 10:33:21 · 325 阅读 · 0 评论 -
题目 - 话题焦点
题目描述微博提供了一种便捷的交流平台。一条微博中,可以提及其它用户。例如Lee发出一条微博为:“期末考试顺利 @Kim @Neo”,则Lee提及了Kim和Neo两位用户。我们收集了N(1 < N < 10000)条微博,并已将其中的用户名提取出来,用小于100的正整数表示。通过分析这些数据,我们希望发现大家的话题焦点人物,即被提及最多的人(题目保证这样的人有且只有一个),并找出那些提及它的人。关于输入输入共两部分第一部分是微博数量N,1 < N < 10000.第二部分是N原创 2021-10-21 16:13:45 · 1015 阅读 · 0 评论 -
478-3279
描述在美国,商家都喜欢用好记的电话号码。人们常用的方法就是把电话号码拼成一个便于记忆的词汇或者短语,比如你可以通过Gino比萨店的电话号码301-GINO来定比萨。另一个方法就是把电话号码分为成组的数字,比如你可以通过必胜客的电话“三个十”:3-10-10-10来定比萨。一个七位电话号码的标准形式是xxx-xxxx,如 123-4567。通常,电话上的数字与字母的映射关系如下A, B, C 映射到 2D, E, F 映射到 3G, H, I 映射到 4J, K, L映射到5M, N, O映射原创 2021-10-21 10:39:29 · 348 阅读 · 0 评论 -
题目 - 寻找山顶
描述在一个m×n的山地上,已知每个地块的平均高程,请求出所有山顶所在的地块(所谓山顶,就是其地块平均高程不比其上下左右相邻的四个地块每个地块的平均高程小的地方)。关于输入第一行是两个整数,表示山地的长m(5≤m≤20)和宽n(5≤n≤20)。其后m行为一个m×n的整数矩阵,表示每个地块的平均高程。每行的整数间用一个空格分隔。关于输出输出所有上顶所在地块的位置。每行一个。按先m值从小到大,再n值从小到大的顺序输出。例子输入10 50 76 81 34 661 13 58 4 405 24原创 2021-10-20 14:21:14 · 640 阅读 · 0 评论 -
题目 - 单词排序
描述输入一行单词序列,相邻单词之间由1个或多个空格间隔,请按照字母顺序输出这些单词(即按照字符串中字母的ASCII码排序,区分大小写,当首字母相同时,比较第2个字母,依次类推),要求重复的单词只输出一次。关于输入一行单词序列,最少1个单词,最多100个单词,每个单词长度不超过50,单词之间用至少1个空格间隔。关于输出按字母顺序输出这些单词,重复的单词只输出一次。例子输入She wants to go to Peking University to study Chinese例子输出C原创 2021-10-20 11:05:42 · 538 阅读 · 0 评论 -
题目 - 最长单词
题目描述输入一个以’.'结尾的简单英文句子,单词之间用空格分隔,没有缩写形式和其它特殊形式;输出该句子中最长的单词。关于输入一个以’.'结尾的简单英文句子,单词之间用空格分隔,没有缩写形式和其它特殊形式,每个单词长度小于100,整个句子长度小于1000关于输出该句子中最长的单词。如果多于一个,则输出第一个例子输入I am a student of Peking University.例子输出University源码实现#include <iostream>#include原创 2021-10-20 09:53:07 · 899 阅读 · 0 评论 -
统计字符数
题目描述判断一个由a-z 这26 个字符组成的字符串中哪个字符出现的次数最多关于输入第1 行是测试数据的组数n,每组测试数据占1 行,是一个由a-z 这26 个字符组成的字符串每组测试数据之间有一个空行,每行数据不超过1000 个字符且非空关于输出n 行,每行输出对应一个输入。一行输出包括出现次数最多的字符和该字符出现的次数,中间是一个空格。如果有多个字符出现的次数相同且最多,那么输出ascii 码最小的那一个字符。例子输入2abbcccadfadffasdf例子输出c 3f原创 2021-10-20 09:40:10 · 287 阅读 · 0 评论 -
整数序列中的众数和中位数
描述输入无符号整数序列(不多于500个整数,每个整数不大于150),计算序列的众数和中位数。众数是指出现次数最多的那个数;如果有多个数出现的次数都达到最多,则取最先出现的数为众数;如果所有的数都相等,则众数由大写 NO 表示。中位数是指按大小排序后正好居中的那个数(如果序列有奇数个整数,大小位于序列中最中间的数为中位数,如果序列中有偶数个整数,则取中间两个数的平均值,以除式表示平均值)例如,有如下6个数:6,2,4,2,3,32和3出现的次数最多,均为2次,但序列中2先出现,因此,众数选择2;在原创 2021-10-20 09:17:12 · 783 阅读 · 0 评论 -
题目-计算鞍点
描述输入一个二维 (5*5)数组,每行只有一个最大值,每列只有一个最小值。如果存在鞍点,则输出鞍点所在的位置(行和列),不存在鞍点时,要输出“not found”。鞍点指的是数组中的一个元素,它是所在行的最大值,并且是所在列的最小值。关于输入输入包含一个5行5列的矩阵关于输出如果存在鞍点,输出鞍点所在的行、列及其值,如果不存在,输出"not found"例子输入11 3 5 6 912 4 7 8 1010 5 6 9 118 6 4 7 215 10 11 20 25例子输出原创 2021-10-19 13:09:57 · 499 阅读 · 0 评论 -
矩阵的错误探测
描述给出由0和1组成的矩阵,如果矩阵的每一行和每一列的1的数量都是偶数,则认为符合条件。你的任务就是检测矩阵是否符合条件,或者在仅改变一个矩阵元素的情况下能否符合条件。"改变矩阵元素"的操作定义为0变成1,1变成0。关于输入包含多个测试数据。每个测试数据有多行,第一行为矩阵的大小n(n<100),以下n行为矩阵的值。输入以0结束。关于输出如果矩阵符合条件,则输出OK如果矩阵仅改变一个矩阵元素就能符合条件,则输出Change bit (x,y),其中x和y为该元素的坐标如果不符合以上原创 2021-10-19 10:45:04 · 618 阅读 · 0 评论 -
点对距离排序
描述给出三维空间中的n个点(不超过10个),求出n个点两两之间的距离,并按距离由大到小依次输出两个点的坐标及它们之间的距离。关于输入输入包括两行,第一行包含一个整数n表示点的个数,第二行包含每个点的坐标(坐标都是整数)。点的坐标的范围是0到100,输入数据中不存在坐标相同的点。关于输出对于大小为n的输入数据,输出n*(n-1)/2行格式如下的距离信息:(x1,y1,z1)-(x2,y2,z2)=距离其中距离保留到数点后面2位。例子输入40 0 0 1 0 0 1 1 0 1 1 1例子原创 2021-10-18 23:00:53 · 901 阅读 · 0 评论 -
谁考了第k名
描述在一次考试中,每个学生的成绩都不相同,现知道了每个学生的学号和成绩,求考第k名学生的学号和成绩。关于输入第一行有两个整数,学生的人数n(1≤n≤100),和求第k名学生的k(1≤k≤n)。其后有n行数据,每行包括一个学号(整数)和一个成绩(浮点数),中间用一个空格分隔。关于输出输出第k名学生的学号和成绩,中间用空格分隔。(注:请用%g输出成绩)例子输入5 390788001 67.890788002 90.390788003 6190788004 68.490788005 73原创 2021-10-17 18:57:10 · 231 阅读 · 0 评论 -
奇数单增序列
描述给定一个长度为N(不大于500)的正整数序列,请将其中的所有奇数取出,并按增序输出。关于输入共2行第1行为 N第2行为 N 个正整数,其间用空格间隔。关于输出增序输出的奇数序列,数据之间以逗号间隔。例子输入101 3 2 6 5 4 9 8 7 10例子输出1,3,5,7,9源码实现#include<iostream>#include<algorithm>#include<vector>using namespace std;int原创 2021-10-17 12:04:42 · 466 阅读 · 0 评论 -
数组逆序存储
描述将一个数组中的值按逆序重新存放。例如,原来的顺序为8,6,5,4,1。要求改为1,4,5,6,8。关于输入输入为两行:第一行数组中元素的个数n(1 < n < 100),第二行是n个整数,每两个整数之间用空格分隔。关于输出输出为一行:输出逆序后数组的整数,每两个整数之间用空格分隔。例子输入58 6 5 4 1例子输出1 4 5 6 8源码实现#include<iostream>#include<algorithm>#include<v原创 2021-10-17 11:53:05 · 3255 阅读 · 0 评论 -
输出前k大的数
描述给定一个数组,数组长度小于1000,统计前k大的数并且把这k个数从大到小输出。关于输入先输入一个n表示数组的长度,然后连续地输入n个数。最后输入一个k。关于输出换行输出前k大的数例子输入104 5 6 9 8 7 1 2 3 05例子输出98765源码实现#include<iostream>#include<algorithm>#include<vector>using namespace std;int main() {原创 2021-10-17 11:47:48 · 393 阅读 · 0 评论 -
校门外的树
题目描述某校大门外长度为L的马路上有一排树,每两棵相邻的树之间的间隔都是1米。我们可以把马路看成一个数轴,马路的一端在数轴0的位置,另一端在L的位置;数轴上的每个整数点,即0,1,2,……,L,都种有一棵树。由于马路上有一些区域要用来建地铁。这些区域用它们在数轴上的起始点和终止点表示。已知任一区域的起始点和终止点的坐标都是整数,区域之间可能有重合的部分。现在要把这些区域中的树(包括区域端点处的两棵树)移走。你的任务是计算将这些树都移走后,马路上还有多少棵树。关于输入输入的第一行有两个整数L(1 <原创 2021-10-16 17:06:33 · 138 阅读 · 0 评论 -
按照原本输入的顺序输出其中不重复的数字
#include<iostream>#include<vector>using namespace std;int main() { int n, k; cin >> n; int m; int a[101] = { 0 }; cin >> m; a[m]++; cout << m; //第一个数肯定是不会重复的 for (int i = 0; i < n; i++) { cin >> m; a[m原创 2021-10-16 10:22:37 · 332 阅读 · 0 评论 -
一种等价类划分问题
题目描述在两个正整数m和n给定的整数范围内(m 小于 n,且不包括m和n)取出各位数字之和均为k的倍数的所有数(k为正整数),然后将这些数划分成若干个子集合,每个子集合中的元素满足其各位数字之和相等,请输出各个子集合, 其中 n 不大于10000。每个集合元素按从小到大输出,逗号间隔,如果有多个集合,则输出多行;集合中最小元素较小的在前面行输出。例如,m=11, n=35, k=3则,12,21,30 这三个数的每位数字之和均为3,且为3的倍数15,24,33 这三个数的每位数字之和为6,且为原创 2021-10-15 22:57:49 · 697 阅读 · 0 评论 -
数字炸弹(⑦)
题目描述元旦晚会上,有n个学生围坐成一圈,开始玩一种数字7游戏。围坐成一圈的学生按顺时针顺序编号,第一个学生的编号为1,最后一个学生的编号为n。第一个学生从1开始报数,按顺时针方向,下一个学生接着报下一个数。每当有学生报出来的数是7的倍数,或者是一个含有数字7的数时,则该学生出列退出游戏,下一个学生接着报下一个数。当剩下最后一个学生时,这个学生要为大家表演一个节目。关于输入输入仅一个整数n(n≤100),学生人数。关于输出按学生退出游戏的顺序输出学生的编号,每行一个编号。例子输入5例子输出原创 2021-10-15 16:37:09 · 1945 阅读 · 1 评论 -
判断四边形
题目描述给出平面上a,b,c,d四个点的坐标,依次连接a-b,b-c,c-d,d-a,请你写程序判断得到的图形是否是凸四边形.关于输入输入包含多组数据,每组数据一行,包含8个整数(绝对值都不大于1000),依次为a,b,c,d四个点的坐标.关于输出对每组输入输出一行,若得到的图形是凸四边形,输出"yes",否则输出"no"例子输入0 0 0 1 1 1 1 00 0 1 1 0 1 1 00 0 0 1 0 2 1 10 0 1 1 0 2 2 1例子输出yesnonono提原创 2021-10-15 13:35:05 · 3301 阅读 · 1 评论 -
点和圆的关系【设计一个圆形类(Circle),和一个点类(Point),计算点和圆的关系。】
题目描述设计一个圆形类(Circle),和一个点类(Point),计算点和圆的关系。原创 2021-10-04 15:20:34 · 1509 阅读 · 0 评论 -
设计立方体类(Cube)
题目描述设计立方体类(Cube),求出立方体的面积和体积,分别用全局函数和成员函数判断两个立方体是否相等。(两个立方体相等当且仅当长宽高都相等。)法一:利用成员函数判断#include<iostream>using namespace std;class Cube {public: void setLong(int length) { c_L = length; }//可写,设置长 int getLong() { return c_L; }//可读,读取长 void原创 2021-10-01 18:26:54 · 2501 阅读 · 0 评论 -
使用泰勒级数计算sinx的近似值
#include<iostream>#include<cmath>using namespace std;double lianchu(int a) { double result = 1; for (int x = 1; x <= a; x++) result /= x; return result;}int main() { double x; cin >> x; int i = 1; double sum = x; do { .原创 2021-09-21 20:44:43 · 1373 阅读 · 0 评论 -
编程计算n的所有约数(输出以105为例)
#include<iostream>#include<cmath>using namespace std;bool checka(int a, int n) { if (n % a == 0) return true; else return false;}int main() { int n; cin >> n; for (int i = 1; i <=n; i++) { if (checka(i, n)) cout <原创 2021-09-21 20:54:31 · 1667 阅读 · 1 评论 -
验证角谷猜想:指对于每一个正整数,如果它是奇数,则对它乘3再加1,如果它是偶数,则对它除以2,如此循环,最终都能够得到1。
//在1-100内验证角谷猜想#include<iostream>#include<time.h>using namespace std;int main() { srand((unsigned)time(NULL));//产生随机种子 int a = rand()%100+1; //产生1-100的随机数 while (a > 1) { if (a % 2) a = a * 3 + 1; else a /= 2; } cout <原创 2021-09-22 08:11:31 · 2123 阅读 · 0 评论 -
A,B,C是小学教师,各教2门课,互不重复, 共有6门课:语文,算术,政治,地理,音乐和美术。请编程输出A B C各教哪两门课。
A,B,C是小学教师,各教2门课,互不重复, 共有6门课:语文,算术,政治,地理,音乐和美术。已知:(1)政治老师和算术老师是邻居。(2)地理老师比语文老师年龄大。(3)B最年轻。(4)A经常对地理老师和算术老师讲他看过的文学作品。(5)B经常和音乐老师,语文老师一起游泳。请编程输出A B C各教哪两门课。思路:政治和算术不是同一个人教的。B不教地理。A不教地理或算术。B不教音乐和语文。...原创 2021-09-21 10:47:28 · 5295 阅读 · 0 评论 -
夏日炎炎,空调机走俏。5家空调机厂的产品在一次质量评比活动中分获前5名。评比前大家就已知E的产品肯定不是第2名和第3名。
夏日炎炎,空调机走俏。5家空调机厂的产品在一次质量评比活动中分获前5名。评比前大家就已知E的产品肯定不是第2名和第3名。A的代表猜测:E的产品一定获第1名。B的代表猜测:我可能获第2名。C的代表猜测:A的质量最差。D的代表猜测:C的产品不是最好的。E的代表猜测:D厂会获第1名。评比结果公布以后发现,只有获第1名和第2名的两个厂的代表猜对了。请编程给出A,B,C,D,E各是第几名?思路:如果E是第一名,那E说的就是对的,则D也是第一名,矛盾所以E只能是第四或者第五,即E说的是错的那么A也原创 2021-09-21 19:19:31 · 1362 阅读 · 0 评论 -
求出所有用7,8,9组成的,且各位数字互不相同的3位数。
求出所有用7,8,9组成的,且各位数字互不相同的3位数。#include<iostream>using namespace std;int main() { for (int a=7;a<10;a++) for (int b=7;b<10;b++) for (int c = 7; c < 10; c++) { if (a * b * c == 7 * 8 * 9) { cout << a << b << c原创 2021-09-21 23:06:18 · 663 阅读 · 0 评论