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

点击查看:蓝桥杯历年真题 题解目录

交换瓶子

蓝桥杯第七届真题 :交换瓶子_第1张图片

思路分析:
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;
   }
}

你可能感兴趣的:(蓝桥杯历届真题)