• 问题描述
  • Patchouli Knowledge(パチュリー·ノーレッジ) is the owner of the Embodiment of Scarlet Devil library. She often shelves books time by time.
    For she is careless, Patchouli treats all the books in the same size in the same way.
    Give you several books and their sizes (you only need to consider the height of the books), you should output all the books formations Patchouli may shelf.
  • 输入
  • This problem may contains several cases.
    The first line is a single integer N (0 < N <= 8), indicates the number of books.
    The next line has N integers, the ith integer Hi (0 < Hi <= 15) indecate the height of the ith book.
  • 输出
  • For each case, you have to output the all the possible formations (According to the height difference). Order by lexicographic order. The height will be outputed in hexadecimal.
    上离散课的时候,老师讲了关于排列组合的2个算法,一个是字典序法,一个是邻位交换法,今天试着把前者写了出来,并A了这题,至于后者,由于字典序输出的问题,暂时还没写
    介绍下字典序法
    字典序法中,对于数字1、2、3......n的排列,不同排列的先后关系是从左到右逐个比较对应的数字的先后来决定的。例如对于5个数字的排列12354和12345,排列12345在前,排列12354在后。按照这样的规定,5个数字的所有的排列中最前面的是12345,最后面的是54321。
      字典序算法如下:
      设P是1~n的一个全排列:p=p1p2......pn=p1p2......pj-1pjpj+1......pk-1pkpk+1......pn
      1)从排列的右端开始,找出第一个比右边数字小的数字的序号j(j从左端开始计算),即 j=max{i|pi<pi+1}
      2)在pj的右边的数字中,找出所有比pj大的数中最小的数字pk,即 k=min{i|pi>pj}(右边的数从右至左是递增的,因此k是所有大于pj的数字中序号最大者)
      3)对换pi,pk
      4)再将pj+1......pk-1pkpk+1......pn倒转得到排列p’=p1p2.....pj-1pjpn.....pk+1pkpk-1.....pj+1,这就是排列p的下一个下一个排列。
      例如839647521是数字1~9的一个排列。从它生成下一个排列的步骤如下:
      自右至左找出排列中第一个比右边数字小的数字4 839647521
      在该数字后的数字中找出比4大的数中最小的一个5 839647521
      将5与4交换 839657421
      将7421倒转 839651247
      所以839647521的下一个排列是839651247。
    //字典序法 #include<stdio.h>
    #include<string.h>
    #include<algorithm>
    using namespace std;char hex[6]={'A','B','C','D','E','F'};
    int main()
    {int str[20];int len;while(~scanf("%d",&len)){int i,j,k,a,b,Max_min;for(i=0;i<len;i++){scanf("%d",&str[i]);     }sort(str,str+len);while(1) {Max_min=0x3f3f3f;for(i=0;i<len-1;i++)if(str[i]<=9)printf("%d ",str[i]);elseprintf("%c ",hex[str[i]-10]);if(str[len-1]<=9)printf("%d\n",str[len-1]);elseprintf("%c\n",hex[str[len-1]-10]);for(i=len-1;i>=1;i--)if(str[i]>str[i-1]) //从右往左找第一对正序数{a=str[i-1];k=i-1;break;}  if(i<=0)  break;for(i=len-1;i>k;i--)if(str[i]>a && str[i]<Max_min){j=i;Max_min=str[i];//从右向左找出一个最小的数,它比a要大 ,最靠右 }//交换str[k]=str[k]^str[j];str[j]=str[j]^str[k];str[k]=str[k]^str[j];for(i=k+1,j=len-1;i<j;i++,j--){str[i]=str[i]^str[j];str[j]=str[j]^str[i];str[i]=str[i]^str[j];}}   }return 0;
    }

[1119] Patchouli's Books相关推荐

  1. NBUT 1119 Patchouli's Books (STL应用)

    题意: 输入一个序列,每个数字小于16,序列元素个数小于9. 要求将这个序列所有可能出现的顺序输出,而且要字典序. 思路: 先排序,输出该升序序列,再用next_permutation进行转变即可,它 ...

  2. Codeforces Round #699 (Div. 2) E.Sorting Books(贪心+DP / 线段树)超高质量题解,看不懂来打我 ~

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 E - Sorting Books 一排书架上有 nnn 本书排成一排,每本书上有一个颜色 aia_i ...

  3. LeetCode 1119. Remove Vowels from a String--C++,Java,Python解法

    题目地址:1119. Remove Vowels from a String Given a string S, remove the vowels 'a', 'e', 'i', 'o', and ' ...

  4. BOOKS STORE OPENCART 自适应主题模板 ABC-0093

    2019独角兽企业重金招聘Python工程师标准>>> BOOKS STORE OPENCART 自适应主题模板 ABC-0093 模板特性 兼容浏览器 FireFox 1.5-3. ...

  5. Error: No module named books

    http://djangobook.py3k.cn/2.0/chapter05/ 输入 python manage.py validate, 提示 No module named books 只要将s ...

  6. 1119: 零起点学算法26——判断奇偶数

    1119: 零起点学算法26--判断奇偶数 Time Limit: 1 Sec  Memory Limit: 64 MB   64bit IO Format: %lld Submitted: 2419 ...

  7. Free Download Top 100 Hacking Books

    2019独角兽企业重金招聘Python工程师标准>>> Kali Linux – Assuring Security by Penetration Testing Network A ...

  8. 推荐两本旧书 recommend two CM books,which are not up-to-date

    Recently, some person ask me some question about CM. I want to recommend two CM books,though they ar ...

  9. PAT甲级1119 Pre- and Post-order Traversals (30分):[C++题解]暴搜dfs、前序遍历和后序遍历求中序遍历

    文章目录 题目分析 题目链接 题目分析 分析 给了前序遍历和后序遍历,能够确定根结点,但是左子树和右子树的长度是不确定的.这里采用的解决方案是枚举左子树的结点个数,其实右子树的结点个数也确定了.对于每 ...

最新文章

  1. svn学习笔记(一)
  2. Spring Boot 管理 MVC
  3. 看了就知道为什么别人C语言学习效率那么高了
  4. java 二进制 定义_在Java中,我可以用二进制格式定义一个整数常量吗?
  5. 外卖小程序源码-带流量主-个人用户可接入
  6. sqlserver2014内存数据库特性介绍
  7. 特斯拉CEO马斯克再次动员员工 加快季度末交付
  8. python扩展库简介_NumPy简介-Python扩展程序库 -- NumPy-编程文章分享
  9. 最适合晚上睡不着看的 8 个网站,建议收藏哦
  10. 基于深度学习的视频质量分析 深度学习视频质量诊断 图像质量诊断
  11. VBScript教程-第三章. 脚本的组成部分
  12. TI - MCU - MSP430使用指南1 - MSP430简介及选型指南
  13. CSDN博客图片去水印
  14. 基于GIS和Python的百度地图街景爬取
  15. 如何发布个人网站(入门全套,小白专用,Linux服务器)
  16. 压电式雨量传感器数字感知降雨量
  17. macos复制粘贴快捷键 快速_MacOS中复制和粘贴快捷键说明,及常见的各种快捷键整理大全...
  18. Sqoop 是什么?Sqoop 有什么特点?
  19. 2022留学生落户上海怎么办理社区公共户?
  20. [源码解析] PyTorch 流水线并行实现 (1)--基础知识

热门文章

  1. 基于stm32的两轮自平衡小车1(模块选型篇)
  2. 企业信息管理系统(4)_用户查询
  3. 基于Testbench的FPGA实物自动化测试环境设计
  4. 美学心得(第二百四十二集) 罗国正
  5. Jquery弹出层,背景变暗 居中
  6. python疲劳检测代码_【君奉天|开发日记】疲劳驾驶检测
  7. 数据分析task01(2021.06.15)
  8. 石溪计算机学校校服,美国纽约州著名高中推荐盘点,总有你想去的!
  9. 英国大不列颠百科全书_也许大不列颠即将来临
  10. 一个疑难故障,坑了我半年青春-----知识就是生产力