usaco.section1.3.Combination Lock(暴力模拟)

本文介绍了一种针对三维密码锁的暴力模拟算法,该算法用于计算所有可能的密码组合中,有多少种组合在每一维度上的数字与两个预设密码中的任意一个相差不超过2。文章通过具体的C++代码实现了解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

有一个三维密码锁,每一维是 ( 1, n )  之间的一个数,现在有两个预设密码,求在所有的可能组合而成的密码中,有多少每一维上的数字与两个预设密码中的任意一个相差 2 ,注意密码锁是环形,即 n 后面是 1

暴力模拟

#include <cstdio>
#include <cmath>

using namespace std;

int n, a, b, c, d, e, f;

void init()
{
	scanf("%d%d%d%d%d%d%d", &n, &a, &b, &c, &d, &e, &f);
}

void doit()
{
	int ans = 0;
	for(int i = 1; i <= n; i ++)
		for(int j = 1; j <= n; j ++)
			for(int k = 1; k <= n; k ++){
				bool ok = 0;
				if(abs(i - a) <= 2 || n - abs(i - a) <= 2){
					if(abs(j - b) <= 2 || n - abs(j - b) <= 2)
						if(abs(k - c) <= 2 || n - abs(k - c) <= 2) ans ++, ok = 1;//, printf("%d %d %d 1\n", i, j, k);
				}
				if(!ok) if(abs(i - d) <= 2 || n - abs(i - d) <= 2){
					if(abs(j - e) <= 2 || n - abs(j - e) <= 2)
						if(abs(k - f) <= 2 || n - abs(k - f) <= 2) ans ++;//, printf("%d %d %d 2\n", i, j, k);
				}
			}
	printf("%d\n", ans);
}

int main()
{
	freopen("combo.in", "r", stdin);
	freopen("combo.out", "w", stdout);
	init(); doit();
	return 0;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值