C++/C
主要为C/C++程序设计题为主
Sky-木落
程序猿!热爱编程、旅行、摄影、轻音乐等、
展开
-
贪心算法解汽车加油问题
问题描述:一辆汽车加满油后可行驶n公里。旅途中有若干个加油站。设计一个有效算法,指出应在哪些加油站停靠加油,使沿途加油次数最少。对于给定的n(n <= 5000)和k(k <= 1000)个加油站位置,编程计算最少加油次数。并证明算法能产生一个最优解。在哪些加油站停靠加油,使沿途加油次数最少。对于给定的n(n <= 5000)和k(k <= 1000)个加油站位置,编程计算最少加油次数。并证明算法能产生一个最优解。要求:输入:第一行有2个正整数n和k,表示汽车加满油后可原创 2020-12-27 09:02:46 · 1057 阅读 · 0 评论 -
P5594 【XR-4】模拟赛
题目描述X 校正在进行 CSP 前的校内集训。一共有 nn 名 OIer 参与这次集训,教练为他们精心准备了 mm 套模拟赛题。然而,每名 OIer 都有各自的时间安排,巧合的是,他们在接下来的 kk 天中都恰好有 mm 天有空打模拟赛。为了方便管理,教练规定一个人必须按顺序打完 mm 套模拟赛题。比如,小 X 在接下来的第 2,3,52,3,5 天有空打模拟赛,那么他就必须在第 22 天打第 11 套模拟赛题,第 33 天打第 22 套模拟赛题,第 55 天打第 33 套模拟赛题。教练需要为每一原创 2020-11-27 16:52:38 · 229 阅读 · 0 评论 -
C++ 版本 05:素数回文数的个数
05:素数回文数的个数描述求11到n之间(包括n),既是素数又是回文数的整数有多少个。输入一个大于11小于1000的整数n。###输出11到n之间的素数回文数个数。样例输入23样例输出1提示回文数指左右对称的数,如:292,333。#include <iostream>#include <cmath>#include <cstring>using namespace std;//判断是否是质数bool isPrim (int n原创 2020-11-25 16:19:33 · 3390 阅读 · 2 评论 -
C++版本 04:垂直直方图
04:垂直直方图描述输入4行全部由大写字母组成的文本,输出一个垂直直方图,给出每个字符出现的次数。注意:只用输出字符的出现次数,不用输出空白字符,数字或者标点符号的输出次数。输入输入包括4行由大写字母组成的文本,每行上字符的数目不超过80个。输出输出包括若干行。其中最后一行给出26个大写英文字母,这些字母之间用一个空格隔开。前面的几行包括空格和星号,每个字母出现几次,就在这个字母的上方输出一个星号。注意:输出的第一行不能是空行。样例输入THE QUICK BROWN FOX JUMPED O原创 2020-11-24 15:20:40 · 1550 阅读 · 1 评论 -
C++ 版本 22:神奇的幻方
22:神奇的幻方描述幻方是一个很神奇的N*N矩阵,它的每行、每列与对角线,加起来的数字和都是相同的。我们可以通过以下方法构建一个幻方。(阶数为奇数)1.第一个数字写在第一行的中间2.下一个数字,都写在上一个数字的右上方:a.如果该数字在第一行,则下一个数字写在最后一行,列数为该数字的右一列b.如果该数字在最后一列,则下一个数字写在第一列,行数为该数字的上一行c.如果该数字在右上角,或者该数字的右上方已有数字,则下一个数字写在该数字的下方输入一个数字N(N<=20)输出按上方法原创 2020-11-21 09:34:39 · 4859 阅读 · 0 评论 -
C++版本 21:二维数组左上到右下遍历
21:二维数组右上左下遍历描述给定一个row行col列的整数数组array,要求从array[0][0]元素开始,按从左上到右下的对角线顺序遍历整个数组。输入输入的第一行上有两个整数,依次为row和col。余下有row行,每行包含col个整数,构成一个二维整数数组。(注:输入的row和col保证0 < row < 100, 0 < col < 100)输出按遍历顺序输出每个整数。每个整数占一行。样例输入3 41 2 4 73 5 8 106 9 11原创 2020-11-20 14:58:25 · 2560 阅读 · 3 评论 -
C++版本 18:肿瘤面积
18:肿瘤面积描述在一个正方形的灰度图片上,肿瘤是一块矩形的区域,肿瘤的边缘所在的像素点在图片中用0表示。其它肿瘤内和肿瘤外的点都用255表示。现在要求你编写一个程序,计算肿瘤内部的像素点的个数(不包括肿瘤边缘上的点)。已知肿瘤的边缘平行于图像的边缘。输入只有一个测试样例。第一行有一个整数n,表示正方形图像的边长。其后n行每行有n个整数,取值为0或255。整数之间用一个空格隔开。已知n不大于1000。输出输出一行,该行包含一个整数,为要求的肿瘤内的像素点的个数。样例输入5255 255原创 2020-11-18 16:32:14 · 2172 阅读 · 0 评论 -
C++版本 17:最好的草
17:最好的草描述奶牛Bessie计划好好享受柔软的春季新草。新草分布在R行C列的牧场里。它想计算一下牧场中的草丛数量。在牧场地图中,每个草丛要么是单个“#”,要么是有公共边的相邻两个“#”。给定牧场地图,计算有多少个草丛。例如,考虑如下5行6列的牧场地图.#......#.....#..#...##..#....这个牧场有5个草丛:一个在第一行,一个在第二列横跨了二、三行,一个在第三行,一个在第四行横跨了四、五列,最后一个在第五行。输入第一行包含两个整数R和C,中间用单个空格隔开原创 2020-11-18 11:24:48 · 3692 阅读 · 4 评论 -
C++ 版本 L1-7 谷歌的招聘
L1-7 谷歌的招聘2004 年 7 月,谷歌在硅谷的 101 号公路边竖立了一块巨大的广告牌(如下图)用于招聘。内容超级简单,就是一个以 .com 结尾的网址,而前面的网址是一个 10 位素数,这个素数是自然常数 e 中最早出现的 10 位连续数字。能找出这个素数的人,就可以通过访问谷歌的这个网站进入招聘流程的下一步。自然常数 e 是一个著名的超越数,前面若干位写出来是这样的:e = 2.718281828459045235360287471352662497757247093699959574966原创 2020-11-16 20:26:47 · 481 阅读 · 0 评论 -
C++版本 L1-6 检查密码
L1-6 检查密码本题要求你帮助某网站的用户注册模块写一个密码合法性检查的小功能。该网站要求用户设置的密码必须由不少于6个字符组成,并且只能有英文字母、数字和小数点 .,还必须既有字母也有数字。输入格式:输入第一行给出一个正整数 N(≤ 100),随后 N 行,每行给出一个用户设置的密码,为不超过 80 个字符的非空字符串,以回车结束。输出格式:对每个用户的密码,在一行中输出系统反馈信息,分以下5种:如果密码合法,输出Your password is wan mei.;如果密码太短,不论合法与原创 2020-11-16 19:57:42 · 416 阅读 · 0 评论 -
C++版本 04:错误探测
04:错误探测描述给定n*n由0和1组成的矩阵,如果矩阵的每一行和每一列的1的数量都是偶数,则认为符合条件。你的任务就是检测矩阵是否符合条件,或者在仅改变一个矩阵元素的情况下能否符合条件。"改变矩阵元素"的操作定义为0变成1或者1变成0。输入输入n + 1行,第1行为矩阵的大小n(0 < n < 100),以下n行为矩阵的每一行的元素,元素之间以一个空格分开。输出如果矩阵符合条件,则输出OK;如果矩阵仅改变一个矩阵元素就能符合条件,则输出需要改变的元素所在的行号和列号,以一个空原创 2020-11-11 15:09:35 · 4294 阅读 · 1 评论 -
C++版本 34:回文子串
34:回文子串描述给定一个字符串,输出所有长度至少为2的回文子串。回文子串即从左往右输出和从右往左输出结果是一样的字符串,比如:abba,cccdeedccc都是回文字符串。输入一个字符串,由字母或数字组成。长度500以内。输出输出所有的回文子串,每个子串一行。子串长度小的优先输出,若长度相等,则出现位置靠左的优先输出。样例输入123321125775165561样例输出331177552332211257756556123321165561#include原创 2020-11-10 09:26:51 · 1747 阅读 · 1 评论 -
C++版本 33:判断字符串是否为回文(用栈来解决)
33:判断字符串是否为回文描述输入一个字符串,输出该字符串是否回文。回文是指顺读和倒读都一样的字符串。输入输入为一行字符串(字符串中没有空白字符,字符串长度不超过100)。输出如果字符串是回文,输出yes;否则,输出no。样例输入abcdedcba样例输出yes#include<iostream>#include<cstring>using namespace std;int top = 0;int mid = 0;char arr[105];原创 2020-11-09 21:27:58 · 1335 阅读 · 0 评论 -
C++版本 31:字符串p型编码
31:字符串p型编码描述给定一个完全由数字字符(‘0’,‘1’,‘2’,…,‘9’)构成的字符串str,请写出str的p型编码串。例如:字符串122344111可被描述为"1个1、2个2、1个3、2个4、3个1",因此我们说122344111的p型编码串为1122132431;类似的道理,编码串101可以用来描述1111111111;00000000000可描述为"11个0",因此它的p型编码串即为110;100200300可描述为"1个1、2个 0、1个2、2个0、1个3、2个0",因此它的p型编码串原创 2020-11-09 20:11:23 · 1379 阅读 · 0 评论 -
C++ 版本 30:字符环
30:字符环描述有两个由字符构成的环。请写一个程序,计算这两个字符环上最长连续公共字符串的长度。例如,字符串“ABCEFAGADEGKABUVKLM”的首尾连在一起,构成一个环;字符串“MADJKLUVKL”的首尾连在一起,构成一个另一个环;“UVKLMA”是这两个环的一个连续公共字符串。输入一行,包含两个字符串,分别对应一个字符环。这两个字符串之间用单个空格分开。字符串长度不超过255,且不包含空格等空白符。输出输出一个整数,表示这两个字符环上最长公共字符串的长度。样例输入ABCEF原创 2020-11-08 17:15:52 · 2360 阅读 · 1 评论 -
C++版本 27:单词翻转
27:单词翻转描述输入一个句子(一行),将句子中的每一个单词翻转后输出。输入只有一行,为一个字符串,不超过500个字符。单词之间以空格隔开。输出翻转每一个单词后的字符串,单词之间的空格需与原文一致。样例输入hello world样例输出olleh dlrow#include<iostream>#include<cstring>#include<cstdio>#include<cmath>using namespace s原创 2020-11-08 15:15:09 · 1754 阅读 · 1 评论 -
C++版本 26:字符串最大跨距
26:字符串最大跨距描述有三个字符串S,S1,S2,其中,S长度不超过300,S1和S2的长度不超过10。想检测S1和S2是否同时在S中出现,且S1位于S2的左边,并在S中互不交叉(即,S1的右边界点在S2的左边界点的左侧)。计算满足上述条件的最大跨距(即,最大间隔距离:最右边的S2的起始点与最左边的S1的终止点之间的字符数目)。如果没有满足条件的S1,S2存在,则输出-1。例如,S = “abcd123ab888efghij45ef67kl”, S1=“ab”, S2=“ef”,其中,S1在S中出现原创 2020-11-08 11:05:24 · 1887 阅读 · 0 评论 -
C++版本 24:单词的长度
24:单词的长度描述输入一行单词序列,相邻单词之间由1个或多个空格间隔,请对应地计算各个单词的长度。注意,如果有标点符号(如连字符,逗号),标点符号算作与之相连的词的一部分。没有被空格间开的符号串,都算作单词。输入 一行单词序列,最少1个单词,最多300个单词,单词之间用至少1个空格间隔。单词序列总长度不超过1000。输出依次输出对应单词的长度,之间以逗号间隔。样例输入She was born in 1990-01-02 and from Beijing city.样例输原创 2020-11-08 10:24:28 · 1968 阅读 · 0 评论 -
C++版本 22:紧急措施
22:紧急措施描述近日,一些热门网站遭受黑客入侵,这些网站的账号、密码及email的数据惨遭泄露。你在这些网站上注册若干账号(使用的用户名不一定相同),但是注册时使用了相同的email。你此时拿到了那份泄露的数据,希望尽快将自己的密码更改。策略如下:根据email找到你的用户名和密码,然后更改密码。更改的规则为:小写和大写交换,非字母字符保持不变。输入第一行为你的email地址,长度不超过50个字符且只包含字母、数字和‘@’符号。第二行为账号数N,N(0 < N < 10000)。接原创 2020-11-08 10:07:42 · 2559 阅读 · 0 评论 -
C++版本 21:单词替换(另外一个思路)
21:单词替换描述输入一个字符串,以回车结束(字符串长度<=100)。该字符串由若干个单词组成,单词之间用一个空格隔开,所有单词区分大小写。现需要将其中的某个单词替换成另一个单词,并输出替换之后的字符串。输入输入包括3行,第1行是包含多个单词的字符串 s;第2行是待替换的单词a(长度 <= 100);第3行是a将被替换的单词b(长度 <= 100).s, a, b 最前面和最后面都没有空格.输出输出只有 1 行,将s中所有单词a替换成b之后的字符串。样例输入Yo原创 2020-11-08 09:26:05 · 4444 阅读 · 0 评论 -
C++版本 17:字符串判等
17:字符串判等描述判断两个由大小写字母和空格组成的字符串在忽略大小写,且忽略空格后是否相等。输入两行,每行包含一个字符串。输出若两个字符串相等,输出YES,否则输出NO。样例输入a A bb BB ccc CCCAa BBbb CCCccc样例输出YES解题思路:先将输入的字符串全部转换为小写(大写),然后累加ASCILL码,来比较是否一样,具体代码如下:#include<iostream>#include<stdio.h>#include&l原创 2020-11-07 15:58:01 · 5693 阅读 · 0 评论 -
C++版本 15:整理药名
15:整理药名描述医生在书写药品名的时候经常不注意大小写,格式比较混乱。现要求你写一个程序将医生书写混乱的药品名整理成统一规范的格式,即药品名的第一个字符如果是字母要大写,其他字母小写。如将ASPIRIN、aspirin整理成Aspirin。输入 第一行一个数字n,表示有n个药品名要整理,n不超过100。接下来n行,每行一个单词,长度不超过20,表示医生手书的药品名。药品名由字母、数字和-组成。输出n行,每行一个单词,对应输入的药品名的规范写法。样例输入4AspiRincis原创 2020-11-07 15:45:52 · 1917 阅读 · 0 评论 -
C++版本 12:加密的病历单
12:加密的病历单描述小英是药学专业大三的学生,暑假期间获得了去医院药房实习的机会。在药房实习期间,小英扎实的专业基础获得了医生的一致好评,得知小英在计算概论中取得过好成绩后,主任又额外交给她一项任务,解密抗战时期被加密过的一些伤员的名单。经过研究,小英发现了如下加密规律(括号中是一个“原文 -> 密文”的例子)原文中所有的字符都在字母表中被循环左移了三个位置(dec -> abz)逆序存储(abcd -> dcba )大小写反转(abXY -> ABxy)输入一原创 2020-11-06 23:10:24 · 1290 阅读 · 0 评论 -
C++版本 13:大整数的因子
描述已知正整数k满足2<=k<=9,现给出长度最大为30位的十进制非负整数c,求所有能整除c的k。输入一个非负整数c,c的位数<=30。输出若存在满足 c%k == 0 的k,从小到大输出所有这样的k,相邻两个数之间用单个空格隔开;若没有这样的k,则输出"none"。样例输入30样例输出2 3 5 6 #include<bits/stdc++.h>using namespace std;int main(){ //get(s); string原创 2020-11-05 10:20:43 · 2126 阅读 · 0 评论 -
C++版本 链表的实现和插入数据(结构体)
#include<iostream>#include<stdlib.h>//创建一个结构体来表示链表的结点类型 struct node{ int data; struct node *next;}; using namespace std;int main(){ struct node *head, *p, *q, *t; int i, n, a; //输入要存放的数据 cin >> n; //头指针初始化为空 head = NULL;原创 2020-11-04 16:00:08 · 2065 阅读 · 0 评论 -
C++版本 快速排序
#include<iostream>int arr[105];using namespace std;void quicksort(int left, int right){ int i, j, t, temp; if(left > right){ return ; } //确定基准数 temp = arr[left]; i = left; j = right; //当哨兵i和j没有相遇时进入 while(i != j){ //顺序很重要,要先从右往左原创 2020-11-03 15:37:00 · 100 阅读 · 0 评论 -
C++版本 08:石头剪刀布
描述石头剪刀布是常见的猜拳游戏。石头胜剪刀,剪刀胜布,布胜石头。如果两个人出拳一样,则不分胜负。一天,小A和小B正好在玩石头剪刀布。已知他们的出拳都是有周期性规律的,比如:“石头-布-石头-剪刀-石头-布-石头-剪刀……”,就是以“石头-布-石头-剪刀”为周期不断循环的。请问,小A和小B比了N轮之后,谁赢的轮数多?输入输入包含三行。第一行包含三个整数:N,NA,NB,分别表示比了N轮,小A出拳的周期长度,小B出拳的周期长度。0 < N,NA,NB < 100。第二行包含NA个整数,表原创 2020-11-01 20:23:54 · 1699 阅读 · 0 评论 -
C++版本 30:含k个3的数
30:含k个3的数描述输入两个正整数 m 和 k,其中1 < m < 100000,1 < k < 5 ,判断 m 能否被19整除,且恰好含有k个3,如果满足条件,则输出YES,否则,输出NO。例如,输入:43833 3满足条件,输出YES如果输入:39331 3尽管有3个3,但不能被19整除,也不满足条件,应输出NO。输入 m 和 k 的值,中间用单个空格间隔。输出满足条件时输出 YES,不满足时输出 NO。样例输入43833 3样例输出原创 2020-10-31 23:06:24 · 1547 阅读 · 0 评论 -
C++版本 17:菲波那契数列
17:菲波那契数列总时间限制: 1000ms 内存限制: 65536kB描述菲波那契数列是指这样的数列: 数列的第一个和第二个数都为1,接下来每个数都等于前面2个数之和。给出一个正整数k,要求菲波那契数列中第k个数是多少。输入输入一行,包含一个正整数k。(1 <= k <= 46)输出输出一行,包含一个正整数,表示菲波那契数列中第k个数的大小样例输入19样例输出4181解法一:递归解法(时间复杂度高)#include<bits/stdc++.h>u原创 2020-10-29 23:52:05 · 689 阅读 · 0 评论 -
C++版本 L1-011 A-B (20分)
L1-011 A-B (20分)本题要求你计算A−B。不过麻烦的是,A和B都是字符串 —— 即从字符串A中把字符串B所包含的字符全删掉,剩下的字符组成的就是字符串A−B。输入格式:输入在2行中先后给出字符串A和B。两字符串的长度都不超过10^4,并且保证每个字符串都是由可见的ASCII码和空白字符组成,最后以换行符结束。输出格式:在一行中打印出A−B的结果字符串。输入样例:I love GPLT! It's a fun game!aeiou输出样例:I lv GPLT! It's原创 2020-10-29 17:25:13 · 1300 阅读 · 3 评论 -
C++版本 L1-009 N个数求和 (20分)
L1-009 N个数求和 (20分)本题的要求很简单,就是求N个数字的和。麻烦的是,这些数字是以有理数分子/分母的形式给出的,你输出的和也必须是有理数的形式。输入格式:输入第一行给出一个正整数N(≤100)。随后一行按格式a1/b1 a2/b2 …给出N个有理数。题目保证所有分子和分母都在长整型范围内。另外,负数的符号一定出现在分子前面。输出格式:输出上述数字和的最简形式 —— 即将结果写成整数部分 分数部分,其中分数部分写成分子/分母,要求分子小于分母,且它们没有公因子。如果结果的整数部分为原创 2020-10-29 17:01:31 · 1880 阅读 · 4 评论 -
C++版本 L1-006 连续因子 (20分)
L1-006 连续因子 (20分)一个正整数 N 的因子中可能存在若干连续的数字。例如 630 可以分解为 3×5×6×7,其中 5、6、7 就是 3 个连续的数字。给定任一正整数 N,要求编写程序求出最长连续因子的个数,并输出最小的连续因子序列。输入格式:输入在一行中给出一个正整数 N(1<N<231 )。输出格式:首先在第 1 行输出最长连续因子的个数;然后在第 2 行中按 因子1因子2……*因子k 的格式输出最小的连续因子序列,其中因子按递增顺序输出,1 不算在内。输入样原创 2020-10-28 15:52:47 · 1540 阅读 · 0 评论 -
10进制数转换为16进制数,c++
10进制数转换为16进制数,c++#include<iostream>using namespace std;int main(){ int n, i = 0; char arr[1000];//定义一个char型数组用来保存16进制数据 cin >> n;//输入n if( n == 0 ){ cout<<"0";//如果n = 0,则直...原创 2020-03-12 08:26:46 · 2372 阅读 · 0 评论