求一算法:调换位置最少需要多少步骤,该怎么解决
求一算法:调换位置最少需要多少步骤
描述:
有一列源数据,如a1,a4,a5,a2,a3;
该列经过若干次两数交换,成为目标数据a1,a5,a2,a4,a3。
求:最少需要经过多少次交换?
说明,该列数中可能存在相同的数据,如:可能a2=a4。
-------------------------------
举例:
源数据: 1 3 2 4 5
目标数据:1 3 4 2 5
答案:经过1次交换。
源数据: 1 3 2 4 5
目标数据:3 1 2 5 4
答案:经过2次交换。
源数据: 1 3 3 4 5
目标数据:3 1 3 4 5
答案:经过1次交换。
在线等待。高分求教。
给个思路,或者描述个算法都好。谢谢兄弟们啦。
------解决方案--------------------
这需求。。。。。。
------解决方案--------------------
初步观察了下。比较源数据和目标数据,比较有多少个位置不同,然后把它初以2得出最少的次数。
不晓得对不对。
------解决方案--------------------
不是说 “最少需要多少步骤” 么?
------解决方案--------------------
描述:
有一列源数据,如a1,a4,a5,a2,a3;
该列经过若干次两数交换,成为目标数据a1,a5,a2,a4,a3。
求:最少需要经过多少次交换?
说明,该列数中可能存在相同的数据,如:可能a2=a4。
有点不明白你的意思
我分两中情况来说明:
一,特殊的:0次交换
假如这五个数字全部都相等 你只需判断一下 无需交换
二,通用的:次交换
原始数据:a1,a4,a5,a2,a3
一次交换:a1, a5, a4, a2, a3
二次交换:a1, a5, a2, a4, a3
当然不只这一种方法,但是肯定不会少与两次交换
如果我吧题意弄错了 权当顶一下
------解决方案--------------------
我感觉这个东西跟算法扯不上啊
------解决方案--------------------
1 2 3 4 --> 2 1 4 3:
遍历初始数组 1 2 3 4,
逐个元素和目标数组2 1 4 3 比较,如果数据不匹配,
则把匹配的数据交换过来:
交换次数count =0,
1 第一个元素1不匹配, 找到2,把2和当前元素交换,得到:2 1 3 4,下一个元素, count+1=1;
2 第二个元素1匹配, 下一个元素;
3 第三个元素不匹配,找到匹配元素4,交换过来, count+1=2
...
------解决方案--------------------
似乎不需要什么特别的算法,
就这么遍历统计一下就可以了 ~
描述:
有一列源数据,如a1,a4,a5,a2,a3;
该列经过若干次两数交换,成为目标数据a1,a5,a2,a4,a3。
求:最少需要经过多少次交换?
说明,该列数中可能存在相同的数据,如:可能a2=a4。
-------------------------------
举例:
源数据: 1 3 2 4 5
目标数据:1 3 4 2 5
答案:经过1次交换。
源数据: 1 3 2 4 5
目标数据:3 1 2 5 4
答案:经过2次交换。
源数据: 1 3 3 4 5
目标数据:3 1 3 4 5
答案:经过1次交换。
在线等待。高分求教。
给个思路,或者描述个算法都好。谢谢兄弟们啦。
------解决方案--------------------
这需求。。。。。。
------解决方案--------------------
初步观察了下。比较源数据和目标数据,比较有多少个位置不同,然后把它初以2得出最少的次数。
不晓得对不对。
------解决方案--------------------
不是说 “最少需要多少步骤” 么?
------解决方案--------------------
描述:
有一列源数据,如a1,a4,a5,a2,a3;
该列经过若干次两数交换,成为目标数据a1,a5,a2,a4,a3。
求:最少需要经过多少次交换?
说明,该列数中可能存在相同的数据,如:可能a2=a4。
有点不明白你的意思
我分两中情况来说明:
一,特殊的:0次交换
假如这五个数字全部都相等 你只需判断一下 无需交换
二,通用的:次交换
原始数据:a1,a4,a5,a2,a3
一次交换:a1, a5, a4, a2, a3
二次交换:a1, a5, a2, a4, a3
当然不只这一种方法,但是肯定不会少与两次交换
如果我吧题意弄错了 权当顶一下
------解决方案--------------------
我感觉这个东西跟算法扯不上啊
------解决方案--------------------
1 2 3 4 --> 2 1 4 3:
遍历初始数组 1 2 3 4,
逐个元素和目标数组2 1 4 3 比较,如果数据不匹配,
则把匹配的数据交换过来:
交换次数count =0,
1 第一个元素1不匹配, 找到2,把2和当前元素交换,得到:2 1 3 4,下一个元素, count+1=1;
2 第二个元素1匹配, 下一个元素;
3 第三个元素不匹配,找到匹配元素4,交换过来, count+1=2
...
------解决方案--------------------
似乎不需要什么特别的算法,
就这么遍历统计一下就可以了 ~