目录

1.数的划分

2.求先序排列

3.平方计算

4.三角形高

5.单词复数


1.数的划分

问题描述

将整数n分成k份,且每份不能为空,任意两份不能相同(不考虑顺序)。
例如:n=7,k=3,下面三种分法被认为是相同的。
1,1,5; 1,5,1; 5,1,1;
问有多少种不同的分法。

输入格式

n,k

输出格式

一个整数,即不同的分法

样例输入

7,3

样例输出

4 {四种分法为:1,1,5;1,2,4;1,3,3;2,2,3;}

数据规模和约定

6<n<=200,2<=k<=6

示例代码

#include<iostream>
using namespace std;
int main() {int n, k;cin >> n >> k;int cnt = 0;for (int a = 1; a <= (n / k); a++) {//让算法运行时间更短for (int b = a; b <= (n - a); b++) {//为了保证不重复,必须大于等于前一个数if (k == 2) {//如果由两个数组成if (a + b == n) {cnt++;}}else {for (int c = b; c <= (n - a - b); c++) {if (k == 3) {//如果由三个数组成if (a + b + c == n) {cnt++;}}else {for (int d = c; d <= (n - a - b - c); d++) {if (k == 4) {//如果由四个数组成if (a + b + c + d == n) {cnt++;}}else {for (int e = d; e <= (n - a - b - c - d); e++) {if (k == 5) {//如果由五个数组成if (a + b + c + d + e == n) {cnt++;}}else {//如果由六个数组成for (int f = e; f <= (n - a - b - c - d - e); f++) {if ((a + b + c + d + e + f) == n) {cnt++;}}}}}}}}}}}cout << cnt;return 0;
}

2.求先序排列

问题描述

给出一棵二叉树的中序与后序排列。求出它的先序排列。(约定树结点用不同的大写字母表示,长度<=8)。

输入格式

两行,每行一个字符串,分别表示中序和后序排列

输出格式

一个字符串,表示所求先序排列

样例输入

BADC
BDCA

样例输出

ABCD

三种排列详解

一颗非空的二叉树由根节点及左、右子树这三个基本部分组成。二叉树的遍历有三种常用方式,分别为先序遍历(根节点->左子树-> 右子树)、中序遍历(左子树-> 根节点 -> 右子树)和后序遍历(左子树-> 右子树-> 根节点)。

更详细请看https://blog.csdn.net/elma_tww/article/details/85640912

示例代码

#include<iostream>
#include<string.h>
using namespace std;char geng;
int index;
string a, b;
char zhong[8], hou[8];void dfs(char zhong[8],char hou[8]) {char zhuo1[8], you1[8], zhuo2[8], you2[8];if (zhong[0] == '\0') {//如果该子树已经为空,则程序结束,返回上一步return;}int len = 0;//cout << "该中序子树为";for (int i = 0; i < 8; i++) {//找到该子树长度//cout << zhong[i] <<" ";if (zhong[i]<65 || zhong[i]>90) {break;}len++;}//cout << endl;//cout << "该子树长度为 "<<len << endl;geng = hou[len - 1];//根节点cout << geng;if (len == 1) {//只有根节点return;}//得到新的左子树和右子树memset(zhuo1,'\0',sizeof(zhuo1));memset(zhuo2,'\0',sizeof(zhuo2));memset(you1,'\0',sizeof(you1));memset(you2,'\0',sizeof(you2));//cout << "找索引值";for (int i = 0; i <len; i++) {//cout << zhong[i]<<" ";if (zhong[i] == geng) {//cout << endl<<"找到了"<<zhong[i] << " ";index = i;break;}}//cout << endl;//cout << "该根的索引值为 " << index << endl;//cout << "中序左子树";for (int i = 0;i<index; i++) {//中序左子树zhuo1[i] = zhong[i];//cout << zhuo1[i];}//cout << endl;//cout << "中序右子树";for (int i = index + 1; i < len; i++) {//中序右子树you1[i-index-1] = zhong[i];//cout << you1[i - index - 1];}//cout << endl;//cout << "后序左子树";for (int i = 0; i < index; i++) {//后序左子树zhuo2[i] = hou[i];//cout << zhuo2[i];}//cout << endl;//cout << "后序右子树";for (int i = index; i < len - 1; i++) {//后序右子树you2[i - index] = hou[i];//cout << you2[i - index];}//cout << endl;dfs(zhuo1, zhuo2);dfs(you1, you2);return;
}
int main() {cin >> a >> b;int cnt = a.length();//cout << "一开始长度" <<cnt<< endl;for (int i = 0; i < cnt; i++) {zhong[i] = a[i];hou[i] = b[i];}dfs(zhong, hou);system("pause");return 0;
}

3.平方计算

问题描述

输入正整数a, m,输出a^2%m,其中^表示乘方,即a^2表示a的平方,%表示取余。

输入格式

输入包含两个整数a, m,a不超过10000。

输出格式

输出一个整数,即a^2%m的值。

样例输入

5 6

样例输出

1

示例代码

#include<iostream>
using namespace std;int main() {int a, b, ans;cin >> a >> b;a = a * a;ans = a % b;cout << ans;return 0;
}

4.三角形高

问题描述

编写一个程序,输入三个实数(double类型)a、b和c作为三角形的三条边;如果三条边能构成三角形,则输出最长边对应的高的长度;如果不能构成三角形,则输出“NO”。结果保留6位小数。
  提示:三角形面积计算可以采用海伦-秦九韶公式:
  S=sqrt( p(p-a)(p-b)(p-c) )
  p = (a+b+c) / 2

样例输入

1.0 2.0 3.0

样例输出

NO

样例输入

3.0 4.0 5.0

样例输出

2.400000

示例代码

#include<iostream>
#include<math.h>
#include<iomanip>
using namespace std;int main() {double a, b, c, temp, p, s, ans, max = 0;cin >> a >> b >> c;if (max < a) {//找最大边max = a;}if (max < b) {max = b;}if (max < c) {max = c;}if ((a + b > c) && (a + c > b) && (b + c > a)) {//任意两边之和大于第三边p = (a + b + c) / 2;temp = p * (p - a) * (p - b) * (p - c);s = sqrt(temp);ans = 2 * s / max;cout << fixed << setprecision(6) << ans << endl;}else {cout << "NO";}return 0;
}

5.单词复数

问题描述

编写一个函数RegularPlural,其功能是实现一个英文单词的复数形式。复数的规则为:
如果单词末尾为s,x,z,ch或sh,则在后面加es;
如果单词末尾为y,且前一个字母为辅音(除a, e, i, o, u以外的其它情况),则把y改成ies;
如果是其它情形,一律在后面加s。
编写测试程序,输入一个长度小于20的单词,输出该单词的复数形式。(注:出自课本第七章第9题)

样例输入

box

样例输出

boxes

示例代码

#include<iostream>
#include<string.h>
using namespace std;char s[20];void RegularPlural(char s[20]) {int len = strlen(s);//cout << len << endl;if (s[len - 1] == 's' || s[len - 1] == 'x' || s[len - 1] == 'z' || ((s[len - 1] == 'h') && ((s[len - 2] == 'c') || s[len - 2] == 's'))) {//第一种情况s[len] = 'e';s[len + 1] = 's';}else if ((s[len - 1] == 'y') && (s[len - 2] != 'a' && s[len - 2] != 'e' && s[len - 2] != 'i' && s[len - 2] != 'o' && s[len - 2] != 'u')) {//第二种情况s[len - 1] = 'i';s[len] = 'e';s[len + 1] = 's';}else {//第三种情况s[len] = 's';}return;
}int main() {cin >> s;RegularPlural(s);int cnt = strlen(s);//cout << cnt << endl;for (int i = 0; i < cnt; i++) {cout << s[i];}return 0;
}

蓝桥杯算法训练合集八 1.数的划分2.求先序排列3.平方计算4.三角形高5.单词复数相关推荐

  1. 蓝桥杯算法训练合集十三 1.P06022.P07033.逗志芃的危机4.唯一的小可爱5.JOE的矩阵

    目录 1.P0602 2.P0703 3.逗志芃的危机 4.唯一的傻子 5.JOE的矩阵 1.P0602 问题描述 编写一个程序,输入一个4位的自然数,将组成该数的各位数字重新排列,形成一个最大数和一 ...

  2. 蓝桥杯算法训练合集一 1.印章2.拿金币3.数字游戏4.无聊的逗5.礼物

    目录 1.印章(动态规划) 2.拿金币(动态规划) 3.数字游戏(搜索) 4.无聊的逗(状态搜索) 5.礼物(二分法和前缀和) 1.印章(动态规划) 问题描述 共有n种图案的印章,每种图案的出现概率相 ...

  3. 蓝桥杯算法训练合集三 1.车的位置2.24点3.最大分解4.RP大冒险5.士兵杀敌(二)

    目录 1.车的位置(搜索) 2.24点(搜索) 3.最大分解(贪心) 4.RP大冒险 5.士兵杀敌(二) 1.车的位置(搜索) 问题描述 在一个n*n的棋盘中,每个格子中至多放置一个车,且要保证任何两 ...

  4. 蓝桥杯算法训练合集四 1.p0802 2.A的B的C次方次方 3.出现次数最多的整数 4.成绩分级 5.台阶问题

    目录 1.p0802 2.A的B的C次方次方 3.出现次数最多的整数 4.成绩分级 5.台阶问题 1.p0802 问题描述 编写一个字符串表达式求解函数int expression(char* s); ...

  5. 蓝桥杯算法训练合集十二 1.比较2.计算最小公倍数3.比赛安排4.潜伏者5.P0702

    目录 1.比较 2.计算最小公倍数 3.比赛安排 4.潜伏者 5.P0702 1.比较 问题描述 给出一个n长的数列,再进行m次询问,每次询问询问两个区间[L1,R1],[L2,R2], 询问数列第L ...

  6. 蓝桥杯算法训练合集十七 1.数字反转2.试题39713.矮人采金子4.筛法5.机器指令

    目录 1.数字反转 2.试题3971 3.矮人采金子 4.筛法 5.机器指令 1.数字反转 问题描述 给定一个整数,请将该数各个位上数字反转得到一个新数.新数也应满足整数的常见形式,即除非给定的原数为 ...

  7. 蓝桥杯算法训练合集十五 1.打翻的闹钟2.智斗锅鸡3.文件列表

    目录 1.打翻的闹钟 2.智斗锅鸡 3.文件列表 1.打翻的闹钟 问题描述 冯迭伊曼晚上刷吉米多维奇刷的太勤奋了,几乎天天迟到.崔神为了让VonDieEman改掉迟到的坏毛病,给他买了个闹钟. 一天早 ...

  8. 蓝桥杯 算法训练 印章

    蓝桥杯 算法训练 印章 共有n种图案的印章,每种图案的出现概率相同.小A买了m张印章,求小A集齐n种印章的概率. 输入输出: 一行两个正整数n和m 一个实数P表示答案,保留4位小数. 样例: 2 3 ...

  9. 蓝桥杯算法训练 印章

    蓝桥杯 算法训练 印章 问题描述 ​ 共有n种图案的印章,每种图案的出现概率相同.小A买了m张印章,求小A集齐n种印章的概率. 输入格式 ​ 一行两个正整数n和m 输出格式 ​ 一个实数P表示答案,保 ...

最新文章

  1. 学习笔记Spark(十)—— Spark MLlib应用(2)—— Spark MLlib应用
  2. 企业实战02:Oracle数据库的安装和卸载
  3. java解压zip异常_java解压zip文件示例
  4. 测试开发之测试方法第二篇
  5. 原来程序员的大部分时间并不是写代码
  6. Centos系统python2.x升级python3.x
  7. oc UIAlertController封装
  8. 视频编解码(九):FFMPEG操作总结一
  9. 应用程序委托协议栈发送消息
  10. shell split分析日志文件
  11. 启示录:新加坡纬壹科技城成功建设经验
  12. 如何将PNG图像转换为word文档?
  13. ActionScript Adobe Flash Builder Adobe Flash CC 学习笔记
  14. Android中通过USB连接来控制硬件设备
  15. mysql自增不连续的问题 ALTER TABLE `表名` AUTO_INCREMENT =1;
  16. 【python】python基础与unittest基础
  17. Bandizip下载网盘地址
  18. ESD5401N-2/TR 瞬态电压抑制器 封装DFN1006-2L WILLSEM
  19. 思考项目 求1+2的2次方+3的3次方+4的4次方+5的5次方+6的6次方的值。(异种循环嵌套)
  20. Matlab如何绘制小提琴图?

热门文章

  1. python实现特征值分解与奇异值分解
  2. 顶级互联网公司高薪招 Cocos 人才 | 9月岗位
  3. Linux下的软连接和硬链接
  4. STM32——独立看门狗
  5. 计算机网络笔记:电子邮件概述
  6. 天纵智能软件快速开发平台单页编辑插件
  7. 任务栏没有输入法的解决方法
  8. Referrer和Referrer-Policy简介
  9. 《Java基础视频-深入浅出精华版视频》视频下载及视频介绍
  10. java个人微博东雷_【原创】我想你是我的(东雷)重