信息学奥赛一本通测评网 1199 全排列 递归算法 Dangerise
老师要求写一篇题解,作为一个十分认真,踏实的学生,就用心的找道简单的题敷衍一下吧。
来看这道题
信息学奥赛一本通(C++版)在线评测系统
这道题既然在递归算法的标签下,就用递归来做吧。
先来捋一下思路,这道题,要求这几个字符的所有排列,
我们在小学六年级时就初步学过排列组合
排列n个互不相同的字符时 情况为A n n种
排列a时 情况只有一种 即a
排列ab时 就相当于在a的左边或右边插入b 情况有两种 ab ba
排列abc时 就是在排列ab的所有情况中,插入c
ab有3个地方可以插入c
cab acb abc
然后ba
cba bca bac
那么思路就很明显了
当长度为n时,就是在n-1的每种情况中,插入多出来的字符
排列之后别忘了给排列结果排序
我这里没看题目,结果多写了去重一步
为了方便,这里还用了结构体
代码如下
#include<iostream>
#include<cstdio>
using namespace std;
struct _sum
{ string text[1000];int len = 0;
}tsum,fsum;
struct _sum f(string a, int len)
{struct _sum sum;if (len == 1){sum.text[0] = a;sum.len = 1;return sum;}else{string t=a.substr(0,1);a.erase(0, 1);len--;struct _sum lsum;lsum = f(a, len);int l = 0;for (int i = 0; i < lsum.len; i++){for (int j = 0; j <= lsum.text[i].length(); j++){sum.text[l] = lsum.text[i].substr(0, j) + t + lsum.text[i].substr(j, lsum.text[i].length() - j);l++;}}sum.len = l;return sum;}
}
int main()
{string a;cin >> a;int len = a.length();tsum = f(a, len);for (int i = 0; i < tsum.len; i++){for (int j = 0; j < tsum.len - i - 1; j++){if (tsum.text[j] > tsum.text[j + 1]){swap(tsum.text[j], tsum.text[j + 1]);}}}int l = 0;for (int i = 0; i < tsum.len; i++){int s = 0;for (int j = 0; j < i; j++){if (tsum.text[j] == tsum.text[i]){s = 1;}}if (s == 0){fsum.text[l] = tsum.text[i];l++;}}fsum.len = l;for (int i = 0; i < fsum.len; i++){cout << fsum.text[i] << endl;}return 0;
}
信息学奥赛一本通测评网 1199 全排列 递归算法 Dangerise相关推荐
- 信息学奥赛一本通(基础算法与数据结构-题解汇总目录)
信息学奥赛一本通(C++版)在线评测系统 基础(二)基础算法 更新中...... 第一章高精度计算 1307[例1.3]高精度乘法 1308[例1.5]高精除 1309[例1.6]回文数(Noip ...
- 信息学奥赛一本通 (C++)上机练习
信息学奥赛一本通(C++)上机练习 此书为娃儿的第一本刷题书.娃儿现在四年级 ,希望他能坚持下来.特开贴加油 luogu: disangan223 第一部分 C++语言 第一章 C++语言入门 T10 ...
- 信息学奥赛一本通在线提交地址
信息学奥赛一本通 1 C++语言入门 1.1 综合 1.1.1 P1458 地球人口承载力估计 正确: 770 提交: 1794 比率: 42.92 % 1.1.2 P1686 Hello, Worl ...
- 信息学奥赛一本通_长乐一中老师演绎“奥赛传奇”
董永建(右一)在课堂上. 台海网5月14日讯 据福州晚报报道,长乐一中有一位"传奇"老师--15年来,他辅导的学生在全国高中生信息学奥赛中获金牌3人次.银牌3人次.铜牌5人次:在全 ...
- 信息学奥赛一本通(C++版) 第二部分 基础算法 第九章 动态规划
总目录详见:https://blog.csdn.net/mrcrack/article/details/86501716 信息学奥赛一本通(C++版) 第二部分 基础算法 第九章 动态规划 第一节 动 ...
- 信息学奥赛一本通 提高篇 第5章 矩阵乘法
例1 矩阵AXB 信息学奥赛一本通(C++版)在线评测系统 [矩阵乘法]矩阵A×B_Uletay-CSDN博客 矩阵乘法--矩阵A×B_vina的博客-CSDN博客 一本通1641[例 1]矩阵 A× ...
- 《信息学奥赛一本通提高篇》第6章 组合数学
例1 计算系数(NOIP2011提高) 信息学奥赛一本通(C++版)在线评测系统 NOIP2011计算系数_nanhan27的博客-CSDN博客 「NOIP2011」 计算系数 - 组合数_TbYan ...
- 《信息学奥赛一本通 提高篇》
提高篇 第一部分 基础算法 第1章 贪心算法 提高篇 第一部分 基础算法 第1章 贪心算法_青少年趣味编程-CSDN博客 提高篇 第一部分 基础算法 第1章 贪心算法 提高篇 第一部分 基础算法 第1 ...
- 信息学奥赛一本通 提高篇 第一部分 基础算法 第2章 二分与三分
信息学奥赛一本通 提高篇 提高版 第一部分 基础算法 第2章 二分与三分 信息学奥赛一本通 提高篇 提高版 第一部分 基础算法 第2章 二分与三分_mrcrack的博客-CSDN博客_信息学奥赛一本通 ...
最新文章
- poj 2449 Remmarguts' Date 启发式搜索 A*算法
- Windows Live Messenger 正式版已经发布
- 模型蒸馏(Distillation)
- Android实现程序之间的跳转
- python人脸对比相似度_python人脸对比
- 10个简单的 Java 性能调优技巧
- 知识星球如何升级为正式星球 知识星球怎么创建星球
- CentOS7环境下搭建Kibana
- flex----其他交互设计
- java证书不通过,java-证书不会偶尔发送
- jroo,已开源,一个java web快速开发工具
- HDU 1269 裸奔的强联通分量
- 4. PSR-4 --- 自动加载
- 番茄助手Visual Assistx报错The security key for this program currently。。
- 在苹果系统MacOS上安装PowerDesigner16.5
- 2021最新版谷歌浏览器百度网盘下载
- 如何准备全国计算机二级Python,二级Python考试技巧
- 【TED ON FLEX】支持flashplayer的RIBBIT系统
- 【C语言蓝桥杯每日一题】——跑步锻炼
- 史上最全视觉SLAM资料及研究方向思路汇总
热门文章
- 原生实现鼠标右键点击显示菜单
- 首次运行 IntelliJ IDEA旗舰版
- 蛋白标签\常用标签\选择标签的介绍
- 依存句法分析解析算法之Chu-LiuEdmonds
- 【vs】如何去掉控制台
- 2022年10月各大学网络教育统考大学英语B考试复习题库及辅导
- swagger打开跳转login页面BUG
- 机器人总动员英语情歌_机器人总动员经典台词对白爱情电影英文独白
- 论文阅读VideoMAE: Masked Autoencoders are Data-Efficient Learners for Self-Supervised Video Pre-Training
- 台式计算机风扇,台式电脑风扇声音大怎么办_台式风扇噪音大怎么解决