老师要求写一篇题解,作为一个十分认真,踏实的学生,就用心的找道简单的题敷衍一下吧。

来看这道题

​​​​​​信息学奥赛一本通(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相关推荐

  1. 信息学奥赛一本通(基础算法与数据结构-题解汇总目录)

    信息学奥赛一本通(C++版)在线评测系统 基础(二)基础算法   更新中...... 第一章高精度计算 1307[例1.3]高精度乘法 1308[例1.5]高精除 1309[例1.6]回文数(Noip ...

  2. 信息学奥赛一本通 (C++)上机练习

    信息学奥赛一本通(C++)上机练习 此书为娃儿的第一本刷题书.娃儿现在四年级 ,希望他能坚持下来.特开贴加油 luogu: disangan223 第一部分 C++语言 第一章 C++语言入门 T10 ...

  3. 信息学奥赛一本通在线提交地址

    信息学奥赛一本通 1 C++语言入门 1.1 综合 1.1.1 P1458 地球人口承载力估计 正确: 770 提交: 1794 比率: 42.92 % 1.1.2 P1686 Hello, Worl ...

  4. 信息学奥赛一本通_长乐一中老师演绎“奥赛传奇”

    董永建(右一)在课堂上. 台海网5月14日讯 据福州晚报报道,长乐一中有一位"传奇"老师--15年来,他辅导的学生在全国高中生信息学奥赛中获金牌3人次.银牌3人次.铜牌5人次:在全 ...

  5. 信息学奥赛一本通(C++版) 第二部分 基础算法 第九章 动态规划

    总目录详见:https://blog.csdn.net/mrcrack/article/details/86501716 信息学奥赛一本通(C++版) 第二部分 基础算法 第九章 动态规划 第一节 动 ...

  6. 信息学奥赛一本通 提高篇 第5章 矩阵乘法

    例1 矩阵AXB 信息学奥赛一本通(C++版)在线评测系统 [矩阵乘法]矩阵A×B_Uletay-CSDN博客 矩阵乘法--矩阵A×B_vina的博客-CSDN博客 一本通1641[例 1]矩阵 A× ...

  7. 《信息学奥赛一本通提高篇》第6章 组合数学

    例1 计算系数(NOIP2011提高) 信息学奥赛一本通(C++版)在线评测系统 NOIP2011计算系数_nanhan27的博客-CSDN博客 「NOIP2011」 计算系数 - 组合数_TbYan ...

  8. 《信息学奥赛一本通 提高篇》

    提高篇 第一部分 基础算法 第1章 贪心算法 提高篇 第一部分 基础算法 第1章 贪心算法_青少年趣味编程-CSDN博客 提高篇 第一部分 基础算法 第1章 贪心算法 提高篇 第一部分 基础算法 第1 ...

  9. 信息学奥赛一本通 提高篇 第一部分 基础算法 第2章 二分与三分

    信息学奥赛一本通 提高篇 提高版 第一部分 基础算法 第2章 二分与三分 信息学奥赛一本通 提高篇 提高版 第一部分 基础算法 第2章 二分与三分_mrcrack的博客-CSDN博客_信息学奥赛一本通 ...

最新文章

  1. poj 2449 Remmarguts' Date 启发式搜索 A*算法
  2. Windows Live Messenger  正式版已经发布
  3. 模型蒸馏(Distillation)
  4. Android实现程序之间的跳转
  5. python人脸对比相似度_python人脸对比
  6. 10个简单的 Java 性能调优技巧
  7. 知识星球如何升级为正式星球 知识星球怎么创建星球
  8. CentOS7环境下搭建Kibana
  9. flex----其他交互设计
  10. java证书不通过,java-证书不会偶尔发送
  11. jroo,已开源,一个java web快速开发工具
  12. HDU 1269 裸奔的强联通分量
  13. 4. PSR-4 --- 自动加载
  14. 番茄助手Visual Assistx报错The security key for this program currently。。
  15. 在苹果系统MacOS上安装PowerDesigner16.5
  16. 2021最新版谷歌浏览器百度网盘下载
  17. 如何准备全国计算机二级Python,二级Python考试技巧
  18. 【TED ON FLEX】支持flashplayer的RIBBIT系统
  19. 【C语言蓝桥杯每日一题】——跑步锻炼
  20. 史上最全视觉SLAM资料及研究方向思路汇总

热门文章

  1. 原生实现鼠标右键点击显示菜单
  2. 首次运行 IntelliJ IDEA旗舰版
  3. 蛋白标签\常用标签\选择标签的介绍
  4. 依存句法分析解析算法之Chu-LiuEdmonds
  5. 【vs】如何去掉控制台
  6. 2022年10月各大学网络教育统考大学英语B考试复习题库及辅导
  7. swagger打开跳转login页面BUG
  8. 机器人总动员英语情歌_机器人总动员经典台词对白爱情电影英文独白
  9. 论文阅读VideoMAE: Masked Autoencoders are Data-Efficient Learners for Self-Supervised Video Pre-Training
  10. 台式计算机风扇,台式电脑风扇声音大怎么办_台式风扇噪音大怎么解决