社区讨论

20pts求调

P9752[CSP-S 2023] 密码锁参与者 1已保存回复 0

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
0 条
当前快照
1 份
快照标识符
@m6szst5n
此快照首次捕获于
2025/02/06 15:04
去年
此快照最后确认于
2025/11/04 09:54
4 个月前
查看原帖
CPP
#include<bits/stdc++.h>
using namespace std;

#define int long long

int n,ans;

char ges[10],g[25][10];

bool check(){
    for(int i=1;i<=n;i++){  //每个测试数据
    int err_bit,err_num=0;
            
        for(int j=1;j<=5;j++){     //逐位验证
            
            if(g[i][j]!=ges[j]){
                err_num++;
                // cerr<<err_num<<endl;
                if(err_num>2)return false;
                if(err_num==2){
                    if(err_bit+1!=j&&err_bit-1!=j)return false;
                    if((((int)(g[i][err_bit]-'0')-(int)(g[err_bit]-'0')+10)%10)!=(((int)(g[i][j]-'0')-(int)(ges[j]-'0')+10)%10))return false;
                }
                else if(err_num==1)err_bit=j;
            }
        }
    }
    return true;
}

void dfs(int deep){
    if(deep>5){
        if(check())ans++;
        return;
    }
    for(int i=0;i<=9;i++){
        ges[deep]=i+'0';
        dfs(deep+1);
    }
}

signed main(){

    cin>>n;

    for(int i=1;i<=n;i++)cin>>g[i][1]>>g[i][2]>>g[i][3]>>g[i][4]>>g[i][5];

    dfs(1);

    cout<<ans;

    return 0;
}

回复

0 条回复,欢迎继续交流。

正在加载回复...