AcWing 1224. 交换瓶子(Java解法)(*^▽^*)
原题链接
中等
作者:
是晴天呀
,
2021-04-05 19:46:46
,
所有人可见
,
阅读 584
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
//核心思想:总是针对当前的位置
static int ans;
static BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
static int n;
static int a[]=new int[10010];
public static void main(String[] args) throws NumberFormatException, IOException {
n=Integer.parseInt(br.readLine());
String srr[]=br.readLine().split(" ");
for(int i=1;i<=n;i++) {
a[i]=Integer.parseInt(srr[i-1]); //这里我们规定a数组下标从1开始,srr数组下标从0开始
}
for(int i=1;i<=n;i++) { //开始交换,针对当前第i个位置。合题的正确顺序应该是每个位置上 i=a[i]
if(a[i]!=i) {
for(int j=i+1;;j++) {
if(a[j]==i) {
int t=a[i];
a[i]=a[j];
a[j]=t;
ans++;
break;
}
}
}else {
continue;
}
}
System.out.println(ans);
}
}