CF137B Permutation 题解

· · 题解

可能更好的食用体验 | 题目传送门 | 我的其他题解

所谓“排列”其实很好理解,只要一个数列中 1\sim n 每个数都出现了,该数列即为一个“排列”。所以,只需统计这个数列中有几个数没有出现,就是需要改变的数的个数。

#include<bits/stdc++.h>
using namespace std;
long long n,a,ans;
int js[5005];
int main()
{ 
    cin>>n; 
    for(int i=1;i<=n;i++) 
         cin>>a,js[a]++;//数组计数,统计每个数字是否出现过
    for(int i=1;i<=n;i++)
        ans+=js[i]==0;//如果该数没有在数列中出现过,则增加答案
    cout<<ans; 
    return 0; 
} 

{\color{Black}\text{xt\_\_}} 温馨提示:

{\color{White}\colorbox{#AD8800} {题解千万条,理解第一条。直接粘题解,棕名两行泪。}}