社区讨论

30分求助

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

讨论操作

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

当前回复
2 条
当前快照
1 份
快照标识符
@lo06fs8i
此快照首次捕获于
2023/10/21 23:10
2 年前
此快照最后确认于
2023/11/02 12:04
2 年前
查看原帖
rt
CPP
#include<bits/stdc++.h>
#define int long long
using namespace std;
int ans,fba[50],a[50][50],n;
void dfs(int dep){
	if(dep > 5){
		int bj1 = 0,bj2 = 0,ch = 0;
		for(register int num = 1;num <= n;++num){
			int difr = 0;
			for(register int i = 1;i <= 5;++i){
				if(fba[i] != a[num][i])difr++;
			}
			if(difr == 1){
				++bj1;
			}
			else if(difr == 2){
				for(register int i = 1;i <= 4;++i){
					if(fba[i] != a[num][i] && fba[i + 1] != a[num][i + 1]){
						if(fba[i] - a[num][i] == fba[i + 1] - a[num][i + 1])++difr;
						else if(a[num][i] + 10 - fba[i] == a[num][i + 1] - fba[i + 1])++difr;
						else if(a[num][i] - fba[i] == a[num][i + 1] + 10 - fba[i])++difr;
					}
				}
				if(difr - 2 == 1)++bj2;
			}
		}
		if(bj2 + bj1 == n){
			++ans;
		}
		return ;
	}
	for(register int i = 0;i <= 9;++i){
		fba[dep] = i;
		dfs(dep + 1);
		fba[dep] = -1;
	}
}
signed main(){

	cin >> n;
	for(register int i = 1;i <= n;++i)for(register int j = 1;j <= 5;++j)cin >> a[i][j];
	dfs(1);
	cout << ans << '\n';
	return 0;
}

回复

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

正在加载回复...