2017Nowcoder Girl初赛重现赛 C 排列

题目链接

这样考虑,遍历一遍,对于每个与下标相同的数,计数器++,下一个数变为其他数,作为一次变换

#include<stdio.h>
#include<iostream>
#include<algorithm>
#include<cmath>
#include<cstring>
#include<string.h>
#include<queue>
#include<stack>
#include<list>
#include<map>
#include<set>
#include<vector>
using namespace std;
typedef long long int ll;
const int maxn =1e5+5;
const int maxm=10000;
const int mod =1e9+7;
const int INF=0x3f3f3f3f;
const double eps=1e-8;
int cnt;
int a[maxn];
int main()
{
    int n;scanf("%d",&n);
    for(int i=1;i<=n;i++)scanf("%d",&a[i]);
    for(int i=1;i<=n;i++)
        if(a[i]==i)
        {
            cnt++;
            a[i+1]=0;
        }
    printf("%d\n",cnt);
    return 0;
}

猜你喜欢

转载自blog.csdn.net/wzazzy/article/details/84866372