Lucky PIN题解

· · 题解

题目传送门

这题难度不大,可以直接枚举。

分析

看到这题,我们就可以想到应从 3 位的 PIN 码入手。显然 PIN 码只有 1000 种可能,我们就从 0999 依次枚举。

枚举的过程就相对简单了。把整个字符串遍历一遍,一位一位判断。当三位 PIN 码在字符串中依次存在时这就算一个合法的 PIN 码了。

最后输出合法的 PIN 码的数量。

代码:

#include<bits/stdc++.h>
using namespace std;
int n,sum;
string s;
bool check(int x){
    bool w1=false,w2=false,w3=false;
    for(int i=0;i<n;++i){
        if(s[i]==char(x/100+48)&&!w1)w1=true;//第一位判断 
        else if(s[i]==char((x/10)%10+48)&&w1&&!w2)w2=true;//第二位判断 
        else if(s[i]==char(x%10+48)&&w2)w3=true;//第三位判断 
    }
    return w3;
}
int main(){
    cin>>n>>s;
    for(int i=0;i<=999;++i)
        if(check(i))
            sum++;//i为合法的PIN码 
    cout<<sum;
    return 0;
}

Bye!