置换群的一个应用,找到给定序列中环的个数,再用元素个数减去环数,就是所求的数。 #include <iostream> using namespace std; bool use[10010]; int num[10010]; int main() { int test,n; int count,i; scanf("%d",&test); while(test--) { count=0; scanf("%d",&n); for(i=1;i<=n;i++) { scanf("%d",&num[i]); use[i]=false; } for(i=1;i<=n;i++) { if(!use[i]) count++; while(!use[i]) { use[i]=true; i=num[i]; } } printf("%d/n",n-count); } return 0; }