第七天 dfs剪枝优化

news2024/11/26 23:57:39

第七天 dfs剪枝&优化

1可行性剪枝
2最优性剪枝
3重复性剪枝


1
在这里插入图片描述
输入
5 5 6
…S.
XX.X.
…X…
…D.X
…X…
输出
YES

——————————————

题解

#include<iostream>
#include<cstdio>
using namespace std;
const int N = 10;
int n,m,T;
char mat[N][N];
bool vis[N][N];
int dx[4] = {0,0,-1,1};
int dy[4] = {1,-1,0,0};
bool ok;
void dfs(int x,int y,int t){
	if(ok){
		return;
	}
	if(t == T){
		if(mat[x][y] == 'D'){
			ok = true;
		}
		return;
	}
	vis[x][y] = true;
	for(int i = 0;i<4;i++){
		int tx = x + dx[i];
		int ty = y + dy[i];
		if(tx<0 || tx >=n || ty<0 || ty>=m || mat[tx][ty] == 'X'|| vis[tx][ty]){
			continue;
		}
		dfs(tx,ty,t+1);
	}
	vis[x][y] = false;
}
int main(){
	cin >>n>>m>>T;
	for(int i = 0;i<n;i++){
		cin >>mat[i];
	}
	int sx,sy,ex,ey;
	for(int i = 0;i<n;i++){
		for(int j = 0;j<m;j++){
			if(mat[i][j] == 'S'){
				sx = i;
				sy = j;
			}
			if(mat[i][j] == 'D'){
				ex = i;
				ey = j;
			}
		}
	}
	if((sx+sy+ex+ey+T) % 2 != 0){
		cout <<"NO"<<endl;
	}else{
		ok = false;
		dfs(sx,sy,0);
		if(ok){
			cout <<"YES"<<endl;
		}else{
			cout <<"NO"<<endl;
		}
	}
	return 0;
} 

2
7月17日是Mr.W的生日,ACM-THU为此要制作一个体积为N*pi的M层生日蛋糕,每层都是一个圆柱体。

设从下往上数第i(1 <= i <= M)层蛋糕是半径为Ri, 高度为Hi的圆柱。当i < M时,要求Ri > Ri+1且Hi > Hi+1。
由于要在蛋糕上抹奶油,为尽可能节约经费,我们希望蛋糕外表面(最下一层的下底面除外)的面积Q最小。
令Q = S*pi
请编程对给出的N和M,找出蛋糕的制作方案(适当的Ri和Hi的值),使S最小。
(除Q外,以上所有数据皆为正整数)

Input:

有两行,第一行为N(N <= 10000),表示待制作的蛋糕的体积为Nπ;第二行为M(M <= 20),表示蛋糕的层数为M。

Output:

仅一行,是一个正整数S(若无解则S = 0)。

Time Limit:1000MS Memory Limit: 10000K

Sample Input

100
2
样例输出
68
————————————————————————

题解

#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
const int INF = 0x3f3f3f3f;
int n,m;
int ans;
int vs[20];
void dfs(int u,int v,int s,int r0,int h0){  //当前层数 当前体积 当前表面积 半径上界 高上界 
	if(u == m){
		if(v == n){
			ans = min(ans,s);
		}
		return;
	}
	if(va[m-u]+v>n){
		return;
	}
	if(2.0*(n-v)/r0 +s >ans){
		return;
	}
	for(int r = r0;r>=m-u;r--){
		for(int h = h0;h>=m-u;h--){
			int tv = v+r*r*h;
			if(tv > n)
				continue;
			int ts = s+2*r*h;
			if(u == 0){
				ts += r*r;
			}
			dfs(u+1,tv,ts,r-1,h-1);
		}
	}
	 
}
int main(){
	cin >>n>>m;
	for(int i = 1;i<=m;i++){
		va[i] = va[i-1]+i*i*i;
	}
	int r0 = sqrt(n) + 0.5;
	ans = INF;
	dfs(0,0,0,r0,n);
	if(ans == INF){
		ans = 0;
	}
	cout <<ans<<endl;
	return 0;
}

3
全排列
在这里插入图片描述

题解

#include<iostream>
#include<cstdio>
using namespace std;
int ans,n;
bool vis[50];
void dfs(int cnt,int num){ //列举的第几个数字 输出的数 
	if(cnt == n){
		cout <<num<<endl;
		return;
	}
	for(int i = 1;i<=n;i++){
		if(!vis[i]){
			vis[i] = true;
			dfs(cnt+1,num*10+i);
			vis[i] = false;
		}
	}
}
int main(){
	cin >>n;
	ans = 1;
	for(int i = 1;i<=n;i++){
		ans *= i;
	}
	cout <<ans<<endl;
	dfs(0,0);
	return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1631974.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

分治策略 --- 快排归并

目录 分治-快排 一、颜色分类 二、排序数组 三、数组中的第K个最大元素 四、库存管理 分治-归并 一、排序数组 二、交易逆序对的总数 三、计算右侧小于当前元素的个数 四、翻转对 分治是一种思想&#xff0c;也就是将大问题分解成小问题&#xff0c;一直分到小问题可…

【bug已解决】发生错误,导致虚拟 CPU 进入关闭状态。如果虚拟机外部发生此错误,则可能已导致物理计算机重新启动......

本bug报错已找到原因,并成功解决。 项目场景: vmware安装ubuntu报错。 如下: 发生错误,导致虚拟 CPU 进入关闭状态。如果虚拟机外部发生此错误,则可能已导致物理计算机重新启动。错误配置虚拟机、客户机操作系统中的错误或 VMware Workstation 中的问题都可以导致关闭状…

关于google search console工具提交sitemap.xml无法抓取的问题解决办法

其实这个问题很好解决。 第一种情况&#xff1a;利用工具为我们的网站自动生成静态的sitemap.xml文件。这种可以检查下是否完整&#xff0c;然后上传到根目录下去&#xff0c;再去google search console提交我们的网站地图。 第二种情况&#xff1a;同样利用工具自动生成动态s…

idea中使用GlassFish服务器启动项目

idea中使用GlassFish服务器进行测试 1.项目背景 当前在研究openMDM项目, 不过该项目不是springboot项目, 并且是使用GlassFish进行war部署的, 但是需要在idea中进行项目的二次开发,故需要进行idea启动项目并且进行开发和调试 2.GlassFish是什么 GlassFish是一个web服务器, …

用来传输文件的协议-FTP

一.FTP协议--文件传输协议 1.了解FTP协议 &#xff08;1&#xff09;FTP服务是用来传输文件的协议 FTP&#xff08;File Transfer Protocol&#xff0c;文件传输协议&#xff09;是TCP/IP协议组中的协议之一&#xff0c;用于互联网上的控制文件的双向传输。是传输文件到Linu…

图像置乱加密-Arnold加密算法

置乱加密是另一种较常用的加密方法&#xff0c;现也被许多文献选用&#xff0c;置乱加密可以是以像素为单位进行全局置乱&#xff0c;该方式打乱了图像像素值的位置&#xff0c;使其图像内容失去相关性&#xff0c;达到保护的目的。也可以是以块为单位进行置乱&#xff0c;该方…

软件开发技巧---TODO特殊事项标注

软件开发技巧—TODO特殊事项标注 文章目录 软件开发技巧---TODO特殊事项标注1、前言2、环境3、TODO注释规范4、Qt中使用TODO5、VS中使用TODO6、总结 更多精彩内容&#x1f449;个人内容分类汇总 &#x1f448;&#x1f449;开发工具 &#x1f448; 1、前言 &#x1f9d8;&…

头歌:Spark的安装与使用

第1关&#xff1a;Scala语言开发环境的部署 相关知识 Scala是一种函数式面向对象语言&#xff0c;它融汇了许多前所未有的特性&#xff0c;而同时又运行于JVM之上。随着开发者对Scala的兴趣日增&#xff0c;以及越来越多的工具支持&#xff0c;无疑Scala语言将成为你手上一件…

电脑已经有了一个Windows10,再多装一个Windows10组成双系统

前言 前段时间已经讲过一次双Windows系统的安装教程&#xff0c;但是小白重新去看了一下&#xff0c;发现写的内容太多&#xff0c;怕小伙伴看了之后一脸萌。 所以今天咱们就重新再来讲讲&#xff1a;在同一台机器上安装Windows10双系统的教程。 注意哦&#xff01;这里的Wi…

paddlehub的简单应用

1、下载安装 pip install paddlehub -i https://pypi.tuna.tsinghua.edu.cn/simple 报错&#xff1a; Collecting onnx<1.9.0 (from paddle2onnx>0.5.1->paddlehub)Using cached https://pypi.tuna.tsinghua.edu.cn/packages/73/e9/5b953497c0e36df589fc60cc6c6b35…

语音识别的基本概念

语音识别的基本概念​​​​​​​ ​​​​​​​ 言语是一种复杂的现象。人们很少了解它是如何产生和感知的。天真的想法常常是语音是由单词构成的&#xff0c;而每个单词又由音素组成。不幸的是&#xff0c;现实却大不相同。语音是一个动态过程&#xff0c;没有明确区分的…

【Unity动画系统】详解Root Motion动画在Unity中的应用(二)

Root Motion遇到Blend Tree 如果Root Motion动画片段的速度是1.8&#xff0c;那么阈值就要设置为1.8&#xff0c;那么在代码中的参数就可以直接反映出Root Motion的最终移动速度。 Compute Thresholds&#xff1a;根据Root Motion中某些数值自动计算这里的阈值。 Velocity X/…

公共代理IP与独享代理IP的区别是什么?

IP地址&#xff0c;是网络世界中设备互相识别的重要线索&#xff0c;当我们谈论相关话题的时候&#xff0c;总会听说“公共IP”和“独享IP”这两个词。作为用户&#xff0c;我们该如何选择更适合自己的IP资源呢&#xff0c;两者又有何区别&#xff1f; 承载用户量&#xff1a;公…

ArcGIS小技巧—基于DEM的河网提取

1、使用DEM数据提取河流水系网络 原始DEM数据中存在误差&#xff0c;或喀斯特地貌等真实地形情况&#xff0c;将引起DEM数据中存在凹陷区域。 在进行水流方向的计算上&#xff0c;如果有洼地会造成错误&#xff0c;因此我们需要进行填洼处理&#xff0c;获得相对准确的DEM数据…

ULTIMATE VOCAL REMOVER V5 for Mac:专业人声消除软件

ULTIMATE VOCAL REMOVER V5 for Mac是一款专为Mac用户设计的人声消除软件&#xff0c;它凭借强大的功能和卓越的性能&#xff0c;在音乐制作和后期处理领域崭露头角。 ULTIMATE VOCAL REMOVER V5 for Mac v5.6激活版下载 这款软件基于深度神经网络&#xff0c;通过先进的训练模…

在美国站群服务器部署时如何保障从253个IP到1000个IP的无缝扩展?

在美国站群服务器部署时如何保障从253个IP到1000个IP的无缝扩展? 在当今企业的数字化转型中&#xff0c;服务器的部署和管理成为了保证业务连续性和拓展性的关键。尤其对于站群服务器来说&#xff0c;随着企业业务的增长和市场的扩展&#xff0c;需要从较小规模的253个IP地址…

Python列表:全面指南

一、引言 1.1 Python列表简介 在Python编程中&#xff0c;列表&#xff08;List&#xff09;是最常用的数据结构之一&#xff0c;它是一个有序的集合&#xff0c;可以容纳任意类型的对象&#xff0c;如数字、字符串甚至其他列表。列表的特点是可变性&#xff0c;这意味着你可…

CAPS Wizard for Mac:打字输入辅助应用

CAPS Wizard for Mac是一款专为Mac用户设计的打字输入辅助应用&#xff0c;以其简洁、高效的功能&#xff0c;为用户带来了全新的打字体验。 CAPS Wizard for Mac v5.3激活版下载 该软件能够智能预测用户的输入内容&#xff0c;实现快速切换和自动大写锁定&#xff0c;从而大大…

看来我对PYTHON的感觉没错,谷歌也已经受不了了

看来不是我一个人感觉PYHTON不完美了&#xff0c;老东家谷歌已经受不了&#xff0c;直接让走人&#xff01; 你们用Python真的感觉那么好用吗? 你们用Python真的感觉那么好用吗&#xff08;二&#xff09;