首页 > 编程语言 >ACM/ICPC算法基础训练教程(2)

ACM/ICPC算法基础训练教程(2)

时间:2024-07-08 17:30:04浏览次数:16  
标签:10 1.2 int ACM ICPC ++ 基础训练 num 位数

关于《ACM/ICPC算法基础训练教程》这本书的一些解释与自我理解

1.2枚举法

1.2.1基本概念

在某些问题中,问题的解被限制在一个有限的范围内,此类问题只需要按照题目的限定,逐一判断这些可能的解是否符合题目的要求,这种方法称为枚举。
枚举算法需要注育两个方面:
一方面,不重、不漏地描述用来限定问题的解的范围,重复了必定会降低效率遗漏了则表示不全面,有可能会找不到问题的解;
另一方面,等价地表示问题对解的要求对于一个元素,如果它是问题的解则判断程序给出“是”的回答,如果判断程序给出“是”的回答则它是问题的解.

1.2.2例题讲解

【例 1-4】 猜数字,
题目描述:
游戏的规则如下:计算机随机产生一个4位数,然后玩家猜这个4位数是什么。每猜一个数,计算机都会告诉玩家猜对几个数字,其中有几个数字在正确的位置上。输人数据有多组。每组的第一行为一个正整数N(1≤N<100),表示在这段对话中共有N次问答。在接下来的N行中,每行三个整数A、B、C。gameboy猜这个4位数A,然后计算机回答猜对了B个数字,其中C个在正确的位置上。当N=0时,则输入类据结束。
如果根据这段对话能确定这个4位数,则输出该4位数;若不能确定,则输出“Not sure"。
输入样例:
6
4815 2 1
5716 1 0
7842 1 0
4901 0 0
8585 3 3
8555 3 2
2
4815 0 0
2999 3 3
0
输出样例:
3585
Not sure
题目来源:
HDU 1172,1wg
http://acm.hdu.edu.cn/showproblem.php?pid=1172
代码示例:

#include<iostream>
#include<algorithm>
using namespace std;
//第i次回答gameboy猜这个数为a[i],猜对了b[i]个数,其中c[i]个在正确的位置上
int n, a[101], b[101], c[101];
int ans, num;
bool check(int x, int y) {
   //4位数x是否符合第y次问答的结果
   int s[4], t[4], pa = a[y], pb = b[y] ,pc = c[y];
   for (int i = 3; i >= 0; i--) {
   	s[i] = x % 10, x /= 10, t[i] = pa % 10, pa /= 10;
   }
   	//检查猜对的数字个数和在正确位置上的个数是否符合
   	int corret_num = 0, correct_pos = 0;
   	for (int i = 0; i < 4; i++) 
   		if (s[i] == t[i])  correct_pos++;//正确位置上的个数
   	for (int i = 0; i < 4; i++) 
   		for (int j = 0; j < 4; j++) 
   			if (t[j] == s[i]) {
   				corret_num++;
   				t[j]=-1;
   				break;
   			}
   	return corret_num == pb && correct_pos == pc;
}
int main() {
   while (cin >> n && n) {
   	for (int i = 0; i < n; i++) 
   		cin >> a[i] >> b[i] >> c[i];
   	num = 0;
   	for (int i = 1000; i < 10000 && num < 2; i++) {
   		int j = 0;
   		for (; j < n; j++) {
   			if (!check(i, j)) {
   				break;
   			}
   			if (j == n)num++, ans = i;
   		}
   		
   	}
   	if (num == 1) cout << ans << endl;
   	else cout << "Not sure" << endl;
   }
   return 0;
}

标签:10,1.2,int,ACM,ICPC,++,基础训练,num,位数
From: https://blog.csdn.net/FGGFFoj/article/details/140260422

相关文章

  • P9668 [ICPC2022 Jinan R] Torch 题解
    思路考虑使用矩阵模拟这个过程。首先,我们可以设初值为:\[\begin{bmatrix}0&1\end{bmatrix}\]表示瘦子初始走\(0\)米,胖子初始走\(1\)米。考虑瘦子走一步。由于瘦子每走一步都不能超过胖子,我们可以使用\((\min,+)\)矩乘来维护这个性质。那么瘦子走一步是:\[\begin{bma......
  • 2024ICPC江西省赛 做+补
    虚拟参与了一下,结果一般,有一点点不尽人意。虚拟参与的讲解AProblem-A-Codeforces这个就很简单了,直接相加就可以了a,b,c=map(int,input().split())print(a+b+c)CProblem-C-Codeforces这道题需要贪心,如果所有的和相加刚刚好等于s,那么就返回n,如果不等于,那......
  • 免费ACME证书申请接口:可以简化SSL/TLS证书申请
    ACME证书申请接口:简化SSL/TLS证书获取的利器在当今互联网安全日益受到重视的背景下,HTTPS已成为网站安全通信的标配。而HTTPS的核心在于SSL/TLS证书,它能够确保数据传输的完整性和安全性。然而,传统的手动创建和安装证书流程复杂且耗时,不利于网站的快速部署和安全更新。为了解决这......
  • 【提交ACM出版 | EI&Scopus检索稳定 | 高录用】第五届大数据与社会科学国际学术会议(IC
    第五届大数据与社会科学国际学术会议(ICBDSS2024)将于2024年08月16-18日在中国-上海隆重举行。ICBDSS会议在各专家教授的支持下,去年已成功举办了四届会议。为了让更多的学者有机会参与会议分享交流经验。本次会议主要围绕“大数据”、“社会科学”等研究领域展开讨论。目......
  • 申请SSL证书保姆级教程,包括FreeSSL申请、Acme脚本申请等方式。
    Acme脚本申请证书Acme脚本申请证书,是我们用到的最常见的一种证书的申请方式,它有很多的申请方法,大家只需要找到一种适合自己的也就好了。不管用下面的何种方式申请,都需要安装Acme,有一部分的申请场景需要用到相关的插件,所以我们需要提前安装。下面环境的安装方式,大家根据自己......
  • HDU-4281 Judges' response(2012 ACM/ICPC Asia Regional Tianjin Online)
    HDU-4281Judges'response(2012ACM/ICPCAsiaRegionalTianjinOnline)状态压缩+01背包+区间dp题意:有n个地点,第一个地点是裁判位置,其他n-1个地点是选手的位置。裁判要给选手解决问题,每个选手都有一个时间表示解决这个选手问题所需要的时间。同样的,裁判也有一个时间,表示这......
  • “翼”鸣惊人,天翼云两篇论文被ACM ICPP 2024收录!
    *日,由天翼云科技有限公司弹性计算产品线天玑实验室撰写的两篇论文《PheCon:Fine-GrainedVMConsolidationwithNimbleResourceDefragmentationinPublicCloudPlatforms》及《Yggdrasil:ReducingNetworkI/OTaxwith(CXL-Based)DistributedSharedMemory》被ACMInte......
  • P6261 [ICPC2019 WF] Traffic Blights 题解
    思路考虑题目要求的是什么。假设\(p_i\)代表通过前\(i\)个红绿灯的概率。那么我们的答案即为\(p_i-p_{i-1}\)。不妨设\(w_i=r_i+g_i\)。我们的限制条件类似:\[t\not\equiva_i\pmodw_i\]那么所有红绿灯会形成周期\(lcm(w_1,w_2,\cdots,w_n)\)。由于\(2019!\)肯......
  • 【ACM独立出版/Fellow大咖云集】 第三届机器人、人工智能与信息工程国际学术会议(RAIIE
    2024年第二届机器人、人工智能与信息工程国际学术会议(RAIIE2024)将于2024年7月5-7日在新加坡举行。本次会议主要围绕“机器人”、“智能仿生”和“信息科学”的最新研究进展展开,会议汇聚了该领域内国际学者、专家、研究人员及相关从业人员,分享研究成果,探讨机器人的最新发展趋势,为......
  • [转]使用acme.sh自动申请、续期、部署免费的SSL证书
    原文地址:使用acme.sh自动申请、续期、部署免费的SSL证书-RidingWind-博客园参考文档:https://github.com/acmesh-official/acme.sh一个使用纯shell操作的免费SSL证书申请部署工具。免费的SSL证书由以下CA机构提供:ZeroSSL.comCA(default)Letsencrypt.orgCABuyPass.comCASSL......