蓝桥杯第七届真题 :交换瓶子

点击查看:蓝桥杯历年真题 题解目录
交换瓶子

在这里插入图片描述

思路分析:
1. 逐个判断瓶子编号是不是在 相应的位置(下标+1),代码已处理,循环从1遍历,无需再+1
2. 如果在相应位置 continue;
   如果不在相应位置 将该索引上的元素 和 编号==该索引的元素互换位置。
3. 每互换一次位置,count++;
package java_2016_A;
import java.util.Scanner;
public class Main009_交换瓶子 {
   static int n ;
   public static void main(String[] args) {
      Scanner in = new Scanner(System.in);
      n = in.nextInt();
      int count = 0;
      int[]a=new int[n+1];
      for(int i=1;i<=n;i++)
         a[i]=in.nextInt();
      for(int i=1;i<=n;i++) {
         if(a[i]==i)  continue;
         else {
            swap(a,a[i],i);
            count++;
         }
      }
      System.out.println(count);
   }
   private static void swap(int[]a,int ele, int index) {
      int t = 0;
      for(int i=1;i<=n;i++) {
         if(a[i]==index) {
            t = i;
            break;
         }
      }
      int temp = a[index];
      a[index]=a[t];
      a[t]=temp;
   }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值