全排列的变换 柔光的暖阳◎ 2022-05-16 12:06 44阅读 0赞 Problem Description 小鑫今天从玄黄那里拿到了一个长度为n的全排列,可是小鑫不喜欢这个全排列,于是小鑫想要把这个全排列变成他希望的样子。 但是全排列不是随便就能变换的,全排列每次变换只能交换相邻的两个数位。例如:123可以通过一步变换变成132,但是不能通过一步变换变成321。 现在你能帮助小鑫把他从玄黄那里拿到的全排列变成他希望的样子吗?小鑫想知道最少需要多少步变换才能将手里的全排列变成他希望的样子。 Input 第一行输入一个整数n(3<=n<=9),代表全排列的长度。 第二行输入一个长度为n的全排列,相邻两个数字之间用空格隔开,代表这是小鑫开始获得的全排列。 第三行输入一个长度为n的全排列,相邻两个数字之间用空格隔开,代表小鑫希望获得的全排列。 Output 输出一个整数,代表从第一个全排列变成第二个全排列最少需要进行的变换次数。 Sample Input 4 1 2 4 3 3 2 1 4 Sample Output 4 Hint 第一步,将1和2交换变为2 1 4 3 第二步,将4和3交换变为2 1 3 4 第三步,将1和3交换变为2 3 1 4 第四步,将2和3交换变为3 2 1 4 分析:这个题我们可以用a数组去存放,真正位置的序号,也就是a存放本来该有的位置,然后通过冒泡排序记录交换的次数。这种方法值得用。 接下来直接看代码: #include <stdio.h> #include <stdlib.h> int main() { int n,a[100],b[100],i,j,t,sum=0; scanf("%d",&n); for(i=0;i<=n-1;i++) { scanf("%d",&a[i]); } for(i=0;i<=n-1;i++) { scanf("%d",&b[i]); } for(i=0;i<=n-1;i++) { for(j=0;j<=n-1;j++) { if(a[i]==b[j]) { a[i]=j; break; } } } for(i=0;i<=n-2;i++) { for(j=0;j<=n-2-i;j++) { if(a[j]>a[j+1]) { t=a[j];a[j]=a[j+1];a[j+1]=t; sum++; } } } printf("%d\n",sum); return 0; } 中间的break;必须写。
相关 排列2 全排列 <table> <tbody> <tr> <td> <h2>排列2</h2> <strong>Time Limit: 1000/1000 MS (Java/O 小咪咪/ 2024年02月18日 22:39/ 0 赞/ 157 阅读
相关 全排列 问题描述:设有\{r1,r2,...,rn\}共n个元素,这n个元素中可能存在重复元素,试设计一个算法,列出这n个元素的不同排列。 参考代码: inclu 电玩女神/ 2022年08月05日 02:54/ 0 赞/ 302 阅读
相关 全排列 全排列 给出一个字符串或整数数组,对这个字符串或整数数组进行全排列 例如:\{1, 2, 3\} 数组,对这个整数数组进行全排列。 递归实现 实现 以你之姓@/ 2022年07月17日 15:25/ 0 赞/ 364 阅读
相关 全排列 方法一:采用递归的方式例子1、将数组int arr\[4\]=\{1,2,3,4\}进行全排列 static int n = 0; void Perm( ﹏ヽ暗。殇╰゛Y/ 2022年06月17日 06:19/ 0 赞/ 326 阅读
相关 全排列的变换 Problem Description 小鑫今天从玄黄那里拿到了一个长度为n的全排列,可是小鑫不喜欢这个全排列,于是小鑫想要把这个全排列变成他希望的样子。 但是全排列不是 柔光的暖阳◎/ 2022年05月16日 12:06/ 0 赞/ 45 阅读
相关 全排列 题目描述 给定一个没有重复数字的序列,返回其所有可能的全排列。 示例: 输入: [1,2,3] 输出: [ [1,2,3], 以你之姓@/ 2022年04月25日 06:54/ 0 赞/ 328 阅读
相关 全排列 全排列是将一组数按一定顺序进行排列,如果这组数有n个,那么全排列数为n!个。现以\{1, 2, 3, 4, 5\}为 例说明如何编写全排列的递归算法。 1、首先看 男娘i/ 2022年03月19日 01:50/ 0 赞/ 388 阅读
相关 全排列 给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。 给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。 示例: 输入:"23" 输 约定不等于承诺〃/ 2022年02月15日 00:47/ 0 赞/ 412 阅读
相关 全排列 talk is cheap, show me the code. public static void permutation(char[]ss,int i){ 蔚落/ 2022年01月29日 04:55/ 0 赞/ 422 阅读
还没有评论,来说两句吧...