这题真是够繁琐,大概就是用一个三重循环去检验三个数字是否能够满足题目的要求。

题目概述:

这题是说给定两个密码,一个是农夫的,一个是系统自己的,都是三位有序数组。之后要求输入的数字的密码中的每一位都不和其中一个正确密码相差两位。

最后输出这样的密码解的个数。

算法思想:

这道题我开始想尽量减少循环层数来着,就是说直接先检验第一个数,然后如果在第一个数满足条件情况下检查第二层循环。同时因为一个可以匹配两个密码所以我一个循环下有两个if。但是后来发现行不通,因为可能有的密码是同时满足和农夫密码相近也和系统密码相近,这样就会多数。嗯最后还是随大流用了在最后一层判断的方法。

简而言之就是有一个函数单独判断两个数字是不是相近,然后再在循环内部用and和or连接起来就够了。

代码部分:

#include <iostream>
#include <list>
#include <map>
#include <math.h>
#include <string.h>
#include <string>
#include <fstream>
#include <algorithm>
using namespace std;
ifstream fin("combo.in");
ofstream fout("combo.out");
int n;bool judge(int x, int y) {int y1 = y - 2;if (y1 <= 0) y1 += n;int y2 = y - 1;if (y2 <= 0) y2 += n;int y3 = y + 1;if (y3 > n) y3 -= n;int y4 = y + 2;if (y4 > n) y4 -= n;if (x == y1 || x == y2 || x == y3 || x == y4 || x == y) {return true;}return false;
}int main() {int res = 0;int a1, a2, a3, b1, b2, b3;fin >> n;fin >> a1 >> a2 >> a3 >> b1 >> b2 >> b3;for (int i1 = 1; i1 <= n; i1++) {for (int i2 = 1; i2 <= n; i2++) {for (int i3 = 1; i3 <= n; i3++) {if ( (judge(i1, a1) && judge(i2, a2) && judge(i3, a3) ) || (judge(i1, b1) && judge(i2, b2) && judge(i3, b3))) res++;}}}fout << res << endl;return 0;
}

USACO 1.3.4 Combination Lock相关推荐

  1. usaco Combination Lock

    w我不知道咋回事思路不清晰这题前面不知道在写什么.没什么好说的枚举就行了. /* ID: jinbo wu LANG: C++ TASK: combo */ #include<bits/stdc ...

  2. USACO Section1.3 Combination Lock 解题报告

    combo解题报告 -- icedream61 博客园(转载请注明出处) --------------------------------------------------------------- ...

  3. USACO-Section 1.3 Combination Lock[...]

    2017-05-30 以下这块属于个人牢骚*_*||: 目前临近期末,有若干的事情要做,尤其是对我这个编程菜鸟来说,,数据库课设的管理系统程序简直就像个去火星的任务-_-||此外还有其他科目的各种报告 ...

  4. 号码锁 Combination Lock

    题目描述 农夫约翰的奶牛不停地从他的农场中逃出来,导致了很多损害.为了防止它们再逃出来,他买了一只很大的号码锁以防止奶牛们打开牧场的门. 农夫约翰知道他的奶牛很聪明,所以他希望确保它们不会在简单地试了 ...

  5. [USACO1.3]号码锁 Combination Lock

    https://www.luogu.org/recordnew/show/17460324 题解: /* *@Author: STZG *@Language: C++ */ #include < ...

  6. 2020CCPC(长春) - Combination Lock(二分图博弈)

    题目大意:给出一个密码锁,两个人一起玩游戏,给出初始的密码,规定: 每一次都可以转动一个位置的数字一个单位 不可以转动到已经出现过的数字 不可以转动到被 ban 掉的数字 无法转动的人视为失败,问谁能 ...

  7. USACO-Section1.4 Combination Lock (枚举)

    2017-5-30 题目描述 给你两个三位数的排列,求出满足条件的排列总数 解答 暴力枚举法 代码 /* ID: 18795871 PROG: combo LANG: C++ */ #include& ...

  8. 号码锁 Combination Lock [USACO1.4]

    题目描述: 农夫约翰的奶牛不停地从他的农场中逃出来,导致了很多损害.为了防止它们再逃出来,他买了一只很大的号码锁以防止奶牛们打开牧场的门. 农夫约翰知道他的奶牛很聪明,所以他希望确保它们不会在简单地试 ...

  9. 转载[POJ题型分类]

    北大ACM题分类 主流算法: 1.搜索 //回溯 2.DP(动态规划) 3.贪心 4.图论 //Dijkstra.最小生成树.网络流 5.数论 //解模线性方程 6.计算几何 //凸壳.同等安置矩形的 ...

最新文章

  1. BAT“上山下乡”,用AI“打入政府”
  2. 理解smart pointer之三:unique_ptr
  3. docker 安装nginx_Docker18安装Nginx和Apache实验
  4. softAP配网:用Android手机为linux无屏设备输入wifi密码
  5. MS-SQL Server字符串处理函数大全
  6. C#-WinForm-无边框窗体的移动和阴影-API
  7. 04-插入操作更新操作删除操作
  8. 动态规划思路和Python解决零钱兑换问题和最大乘积子序列的乘积的问题
  9. bzoj2958: 序列染色3269: 序列染色
  10. pip更新pip,升级 pip3怎么做?
  11. Excel读取mysql数据库
  12. 苹果cms永久免费影视建站程序
  13. 我的appstore新游戏--LeBallon 拿码了
  14. 计算机网络工资如何计算,2019 税后工资计算器,能够准确算薪
  15. 关于STM32的IAP超详细图文解说
  16. Castaways钓鱼还能参与么,数据来告诉你答案
  17. mysql 手工配置_小姜学网络(MySQL数据库的手工安装与配置)附代码
  18. 汽车云智能采集服务 八爪鱼采集器在汽车行业网站的应用
  19. Android神奇“控件”-----RemoteViews
  20. 斐讯N1安装armbian

热门文章

  1. 前端学习当中的一些js案例
  2. GAN+文本生成:让文本以假乱真
  3. @Scheduled中fixedDelay、fixedRate、initialDelay
  4. 《不懂项目管理,还敢拼职场》读书笔记
  5. 营销新玩法~茧数SCRM智能表单不一样的玩法
  6. java visio_java 操作visio-- com4j方式
  7. 有道云笔记新版上线 深化本土应用合作
  8. 第四课 k8s源码学习和二次开发-DeltaFIFO和Indexer原理学习
  9. 【ZYNQ】QSPI Flash 固化程序全攻略
  10. 智能终端信息安全概念(八):硬件安全技术—芯片自主化与安全硬件架构