-
数字排列
2018-11-07 12:49:37数字排列C:数字排列
(输入文件: C.in 输出文件: estdout. pc2)
小明最近对数字的排列产生了强烈的兴趣,他想将任意6个连续一位整数按照每行3个
的方式排列成两行,使得这些数据满足条件: 6个数字各不相同,并且上面的数据比下面的
大、左边的数据比右边的大。请你设计程字帮助小明解决这个数字排列问题,求出数字排列
的具体排列方式。输入数据:
第一行输入一个整数n表示测试案例的个数。此后的每行输入一个数据表示本测试案例
6个连续一位整数的起始数据,当输入的起始数据不能保证连续的6个数据都是1位数时,
显示出Out of data Space!的提示信息。输出数据:
对应每个测试的起始数据,输出以其为首的连续六个数据的排列方式 和排列种数
样例输入:
2
7
-3数样例输出:
Out of data space!
2 0 -2
1 -1 -3
2 1 -2
0 -1 3
2 0 -1
1 -2 -3
2 1 -1
0 -2 -3
2 1 0
-1 -2 -3
Java代码:
public class Main { @SuppressWarnings("resource") public static void main(String[] args) { int n,t; Scanner input = new Scanner(System.in); n = input.nextInt(); for(int i = 0; i < n; i++) { t = input.nextInt(); if(t >= -9 && t <= 4) { show(t); }else { System.out.println("Out of data Space!"); } } } /* * 2 0 -2 5 3 1 * 1 -1 -3 4 2 0 * * 2 1 -2 5 4 1 * 0 -1 -3 3 2 0 * * 2 0 -1 5 3 2 * 1 -2 -3 4 1 0 * * 2 1 -1 5 4 2 * 0 -2 -3 3 1 0 * * 2 1 0 5 4 3 * -1 -2 -3 2 1 0 */ private static void show(int n) { int[] arr = new int[6]; for(int i = 0; i < 6; i++) { arr[i] = n++; } // for(int i = 0; i < arr.length; i++) { // System.out.print(arr[i]+" "); // } System.out.println(arr[5]+" "+arr[3]+" "+arr[1]); System.out.println(arr[4]+" "+arr[2]+" "+arr[0]); System.out.println(arr[5]+" "+arr[4]+" "+arr[1]); System.out.println(arr[3]+" "+arr[2]+" "+arr[0]); System.out.println(arr[5]+" "+arr[3]+" "+arr[2]); System.out.println(arr[4]+" "+arr[1]+" "+arr[0]); System.out.println(arr[5]+" "+arr[4]+" "+arr[2]); System.out.println(arr[3]+" "+arr[1]+" "+arr[0]); System.out.println(arr[5]+" "+arr[4]+" "+arr[3]); System.out.println(arr[2]+" "+arr[1]+" "+arr[0]); } }
-
查询每门课程的平均成绩,结果按平均成绩降序排列,平均成绩相同时,按课程编号升序排列
2020-10-08 09:04:22– 查询每门课程的平均成绩,结果按平均成绩降序排列,平均成绩相同时,按课程编号升序排列 SELECT c.c_id, c.c_name, AVG(sc.s_score) FROM course c INNER JOIN score sc ON sc.c_id=c.c_id GROUP BY c.c_id...– 查询每门课程的平均成绩,结果按平均成绩降序排列,平均成绩相同时,按课程编号升序排列
SELECT c.c_id, c.c_name, AVG(sc.s_score) FROM course c INNER JOIN score sc ON sc.c_id=c.c_id GROUP BY c.c_id ORDER BY AVG(sc.s_score) DESC,c.c_id ASC
-
圆排列
2020-09-29 20:43:31一、圆排列简介 圆排列简单来说,就是排列的数围成了一个圈,如下图: 二、圆排列数 假设总共有nnn个数,圆排列数为xxx,先给出结论: x=Annn=(n−1)!x = \frac{A_n^n}{n}=(n-1)!x=nAnn=(n−1)! 下面简单说明... -
排列序号
2016-06-30 15:26:36题目描述:给出一个不含重复数字的排列,求这些数字的所有排列按字典序排序后该排列的编号。其中,编号从1开始。 样例:例如,排列 [1,2,4] 是第 1 个排列。 关于“字典序”和排列的相关基础概念请翻看我之前的...题目描述:给出一个不含重复数字的排列,求这些数字的所有排列按字典序排序后该排列的编号。其中,编号从1开始。
样例:例如,排列 [1,2,4] 是第 1 个排列。
关于“字典序”和排列的相关基础概念请翻看我之前的博客(详见:点击打开链接),在这篇博客里面我还写了是如何求取一个排列的下一个排列的,如果这些内容你不清楚的话,请先打开链接回看,然后再来做这道题,因为很多内容我会当做你已经很了解字典序,故省略。
好了,这道题的意思是求一个排列的序号。那么我们先写出一个全排列,看看这些排列的规律:
比如,数字1, 2, 3构成的全排列如下:
1, 2, 3
1, 3, 2
2, 1, 3
2, 3, 1
3, 1, 2
3, 2, 1
根据之前我讲的字典序的规律(还是在博文:点击打开链接 中),我们可以发现,一个排列的顺序首先跟他的第一个字符是有关系的。第一个字符越大,其顺序越靠后。比如,上面的排列,现实两个1打头的,再是两个2打头的,最后是两个3打头的。
所以,如果我们知道了一个排列,就可以通过这个规律找到在他之前,比他打头的元素小的排列有多少个。这个与他的打头元素在所有元素中的顺序有关。
比如,现在要求排列2, 1, 4是第几个排列。首先2排在数字[1, 2, 4](升序排列)的第二位,他前面的元素只有1个,那么他前面的这些元素这个元素打头的排列有多少呢?我们可以用 x * (n - 1)! 表示。其中,x为某个排列首元素在所有元素组成的升序中前面的元素个数,n表示所有元素的个数。放到例子里,x = 1, n = 3
首元素处理完毕之后,用同样的逻辑处理第二个元素,有 x * (n - 2)!个排列在这个排列之前,但是需要注意的是这里的x表示的是整个数组中,排除第一位元素之后,小于第二位元素的所有元素的个数。拿2, 1, 4来说,x = 0
然后,再处理第三个,第四个。。。。一直到最后一个。最后将这些数相加就是这个排列之前的排列数,因为求的是第几个排列,所以再加1即可。
感觉没说清楚,举个例子吧:求排列 6, 8, 4, 7, 3, 2 是第几个排列:
1. 处理6:3 * (6 -1)! = 360
2. 处理8:4 * (6 - 2)! = 96
3. 处理4:2 * (6 - 3)! = 12
4. 处理7:2 * (6 - 4)! = 4
5. 处理3:1 * (6 - 5)! = 1
6. 处理2:0 * (6 - 6)! = 0
将上面的数字加和:360 + 96 + 12 + 4 + 1 + 0 = 473
再加1,得到474
所以,排列 6, 8, 4, 7, 3, 2为第474个排列。
代码如下:
第二个函数fact()用于计算阶乘。class Solution: # @param {int[]} A an integer array # @return {long} a long integer def permutationIndex(self, A): n = len(A) order = sorted(A) result = 0 i = 0 while i < n: temp = self.fact(n - i - 1) * order.index(A[i]) order.remove(A[i]) result += temp i += 1 return result + 1 def fact(self, num): if num == 0: return 0 result = 1 for i in range(1, num + 1): result *= i return result # Write your code here
-
已知中序排列和后序排列求先序排列
2017-02-28 15:32:52Name:已知先后序和中序,求出它的先序排列 Copyright:始发于goal00001111的专栏;允许自由转载,但必须注明作者和出处 Author: goal00001111 Date: 11-12-08 10:58 Description: 题目描述: 描述Description ... -
排列硬币
2020-07-09 14:37:35排列硬币(力扣:441) 你总共有 n 枚硬币,你需要将它们摆成一个阶梯形状,第 k 行就必须正好有 k 枚硬币。 给定一个数字 n,找出可形成完整阶梯行的总行数。 n 是一个非负整数,并且在32位有符号整型的范围内。 -
算法020:回文排列-判断给定字符串是否为回文排列
2020-10-26 08:37:12回文排列 给定一个字符串,编写一个函数判定其是否为某个回文串的排列之一。 回文串是指正反两个方向都一样的单词或短语。排列是指字母的重新排列。 回文串不一定是字典当中的单词。 示例1: 输入:"tactcoa... -
排列组合Lua实现
2016-03-21 10:10:20排列 -
枚举排列
2019-02-23 13:00:151)next_permutation:求下一个排列组合 a.函数模板:next_permutation(arr, arr+size); b.参数说明: arr: 数组名 size:数组元素个数 c.函数功能: 返回值为bool类型,当当前序列不存在下一个排列时,函数... -
排列组合
2018-10-01 18:17:08二、排列和组合 排列: n个不同的元素中取m个元素按一定顺序排成一排 组合: n个不同的元素中取m个元素(不关心顺序问题) 解题小技巧:先组合再排列 三、经典方法 1.捆绑法 如要求几个元素相邻,把他们合... -
RGB排列和Pentile排列有什么区别
2018-10-22 23:04:55RGB排列的屏幕用三原色调色,一个像素点一个颜色,所以清晰度高,显示细腻,好的IPS用RPG排列色彩还原度很真实。 P排列,PenTiel是一种oled屏幕的像素排列方式,相对于标准RGB排列,PenTiel排列的成本低,显示效果... -
逆序排列
2018-02-05 22:57:58在一个排列中,如果一对数的前后位置与大小顺序相反,即前面的数大于后面的数,那么它们就称为一个逆序。一个排列中逆序的总数就称为这个排列的逆序数。 如2 4 3 1中,2 1,4 3,4 1,3 1是逆序,逆序数是4。 ... -
html5:div 横向排列的方法。
2017-11-21 12:06:47div 横向排列的方法。 以下面这组 div 为例,wrap 的高度由内容撑开 <div id="wrap"> <div id="div1">div1</div> <div id="div2">div2</div> <div id="div3">div3</... -
HTML实现有序排列和无序排列
2019-05-29 18:43:24一、HTML实现有序排列 有序序列标签都是成组出现的 <ol> <li>这是一号</li> <li>这是2号</li> <li>...有序序列默认排列方式是数字序列,顺序排列。如下图... -
java图书排列
2020-05-23 17:29:59标题:图书排列 将编号为1~10的10本书排放在书架上,要求编号相邻的书不能放在相邻的位置。 请计算一共有多少种不同的排列方案。 注意,需要提交的是一个整数,不要填写任何多余的内容。 9 9 10 9 9 9 9 9 9 10 7 7 ... -
围成一圈的排列组合问题_行测技巧:排列组合之“环形排列”问题
2021-01-30 18:33:34原标题:行测技巧:排列组合之“环形排列”问题在公考学习备考中排列组合一直是大家比较头疼的题目,很多同学在高中时就对这种题目望而却步,其实排列组合题目虽然比较难,但是这类题目却可以总结出多种不同的题型,... -
div的水平排列、垂直排列
2019-05-25 09:26:19垂直排列 –css– .lay1{ width:200px; height:20px; border:1px solid #FF6699; } .lay2{ width:200px; height:20px; border:1px solid #FF6699; ... -
排列2
2017-02-07 10:50:38现有四张卡片,用这四张卡片能排列出很多不同的4位数,要求按从小到大的顺序输出这些4位数。 Input 每组数据占一行,代表四张卡片上的数字(0数字),如果四张卡片都是0,则输入结束。 Output 对每组卡片... -
非递减排列和非递增排列的定义
2019-11-10 09:32:111,2,3,4,5,… : 递增排列 9,8,7,6,5… : 递减排列 1,2,3,3,4,5,8,8,… : 非递减排列 9,8,7,7,6,5,5,2,1,… : 非递增排列 -
排列算法
2015-07-14 22:54:06之前一直没有正儿八经写过排列算法,顶多就是把经过一些化妆后的排列算法作为一个子算法混在大算法里面,今天看书时突然发现排列算法的影子无处不在,TSP问题就是从众多排列中选出最佳排列的问题。下面是利用递归... -
排列组合计算公式简易版
2018-08-30 21:15:25记录一下排列组合中一些重要又常用的公式。 1.0!=10!=10! = 1 2.Pmn=n(n−1)(n−2)⋯(n−m+1)=n!(n−m)!Pnm=n(n−1)(n−2)⋯(n−m+1)=n!(n−m)!P_n ^ m = n(n-1)(n-2)\cdots (n-m+1) = \frac{n!}{(n-m)!} 3.pnn=n... -
EXCEL 把几列排列组合列出所有排列组合情况的绿色工具
2019-07-05 17:07:35EXCEL 利用排列组合公式列出所有排列组合情况 在excel中如何实现第一列和第二列排列组合,输出到第三列 使用这个工具:http://www.excelfb.com/点击:用几列的值排列组合成一列的值 操作如下图:如果需要输出一列,... -
【python 排列组合】Python实现排列组合
2018-09-07 16:24:26调用 itertools 获取排列组合的全部情况数 # -*- encoding=utf-8 -*- from itertools import combinations,permutations # 排列 test_data = {'1', '2', '3'} print('排列有:') for i,j in permutations(test_... -
【递归+回溯】实现数组元素的组合、排列和全排列
2021-01-30 15:30:22最近在做蓝桥杯相关的试题的时候发现对数组元素进行排列组合的使用十分的广泛,而常见的排列组合类型的题目也是数据结构和算法的典型例题,所以今天在这里和大家分享一下我们在平常的开发过程中,常会用到的几种排列... -
排列组合 交叉组合 组合排列算法
2018-06-19 11:41:3120180619一,交叉组合排列算法:1、前言:在项目开发的过程中负责全系统查询检索的一个模块,其中有一个查询方式叫做“交叉组合查询”,与数学中的排列组合类似,因此就开始想看一下这个该怎么写,以下为本人原创... -
【笔记】css实现文字横向排列/竖向排列
2020-07-08 09:35:16横向排列 vertical-rl 竖向排列,从右到左 vertical-lr 竖向排列,从左到右 举例如下: html: <div class="textBox"> <h1>horizontal-tb:横向排列</h1> <h1>vertical-rl:纵向...