AT_arc110_c 思路做法, 题目详解

题目链接:

  • link,点击这里喵。

题意简述:

  • 给出一个排列,长度为 n n n 问是否能通过 n − 1 n-1 n1 次交换(第 i i i 位有且仅可以与 i + 1 i+1 i+1 位交换一次),使这个排列递增(必须交换 n − 1 n-1 n1 次)。

思路:

  • 能使用一次,这意味着如果右边有一个数在这个位置的左边,那么通过这仅有一次机会
  • 如果这一个机会被占用了,那么这个数就不能归位了喵 ~

做法:

  • 所以,应当使当前未归位最小数先归位,否则左边的交换会阻止其到达, 右边的交换则对此无影响
  • 定义一个变量 u s e use use 为使用过的侧边界,若当前要归位的数在 u s e use use 左边,说明已经使用过,则不可行。
if(i<=use && date[i]!=i){
   
    puts("-1");          
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值