HihoCoder - 1691 数字游戏 (全排列函数)

小Hi和小Ho在玩一个数字游戏。

小Hi给出两个N位整数A和B(可能有前导0),小Ho需要经过最少次数的变换将A变成B。

一次变换可以进行以下操作之一:

1. 交换任意两位数字。例如 12345 -> 42315。  

2. 选择任意一位数字加1或减1。注意0减1会变成9,9加1会变成0。  

请你帮助小Ho求出最少的变换次数。

Input

第一行包含一个整数N,代表位数。  

第二行包含两个整数A和B。  

对于50%的数据,1 ≤ N ≤ 6  

对于100%的数据,1 ≤ N ≤ 10, A和B都是N位整数(可能有前导0)。

Output

一个整数,代表最少的变换次数。

Sample Input
4  
1234 4391
Sample Output
5

这道题要用到全排列函数next_permutation,它的作用是自动生成一个全排列。

原序列为a,目标序列为b,那么我们可以知道因为二操作的存在,无论如何我们都能把a变成b,从而我们能得到最优解。

全排列函数使用的目的就是为了让a数组中的数字进行全排列实现所有的情况,然后我们通过所有的情况去对照目标数组b来找到最优解。虽然这种暴力的思想很简单,但是代码不好懂。并且实现第一个操作有个大问题,我们要交换数组中两个数,交换的前提是我们通过a与b的对比在目标数组中找到

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值