acm专题五

news/2025/2/13 14:03:57/文章来源:https://www.cnblogs.com/astronomyyy/p/18710838

一、第一题
代码:

#include <bits/stdc++.h>
using namespace std;
int m,a[10]={1},n;
void dfs(int x)
{int i;for(i=a[x-1];i<=m;i++){if(i==n) continue;a[x]=i;m-=i;if(m==0){for(int j=1;j<x;j++) cout<<a[j]<<'+';cout<<a[x]<<endl;}else dfs(x+1);m+=i;}
}
int main() 
{cin>>n;m=n;dfs(1);return 0;
}

思路:深度优先搜索

二、第二题
代码:

#include <bits/stdc++.h>
using namespace std;
int n,mapp[32][32],vis[32][32],i,j;
int line[4]={-1,1,0,0},row[4]={0,0,-1,1};
queue<int> p;
void bfs(int x,int y)
{vis[x][y]=1;p.push(x),p.push(y);while(!p.empty()){int nowx=p.front();p.pop();int nowy=p.front();p.pop();for(i=0;i<4;i++){int newx=nowx+line[i],newy=nowy+row[i];if(newx>=0&&newx<n&&newy>=0&&newy<n&&mapp[newx][newy]==0&&!vis[newx][newy])vis[newx][newy]=1,p.push(newx),p.push(newy);}}
}
int main() 
{cin>>n;for(i=0;i<n;i++)for(j=0;j<n;j++){cin>>mapp[i][j];if(mapp[i][j]) vis[i][j]=1;}for(i=0;i<n;i++){if(!vis[0][i]) bfs(0,i);if(!vis[n-1][i]) bfs(n-1,i);if(!vis[i][0]) bfs(i,0);if(!vis[i][n-1]) bfs(i,n-1);}for(i=0;i<n;i++){ for(j=0;j<n;j++){if(!vis[i][j]) cout<<2<<' ';else cout<<mapp[i][j]<<' ';}cout<<endl;}return 0;
}

思路:用bfs将边界0标记为1,然后遍历数组,将标记为1的输出1,未标记则输出2

三、第三题
代码:

#include <bits/stdc++.h>
using namespace std;
int n,m,mapp[182][182],vis[182][182],i,j,tail=0,head=0;
int line[4]={-1,1,0,0},row[4]={0,0,-1,1};
struct xy{int x,y;
}a[1000010];
int main() 
{cin>>n>>m;for(i=0;i<n;i++){string s;cin>>s;for(j=0;j<m;j++)if(s[j]=='0') vis[i][j]=0;else {vis[i][j]=1;mapp[i][j]=0;a[tail].x=i,a[tail++].y=j;}}for(head=0;head<=tail;head++){for(i=0;i<4;i++){int newx=a[head].x+line[i],newy=a[head].y+row[i];if(newx>=0&&newx<n&&newy>=0&&newy<m)if(!vis[newx][newy]){mapp[newx][newy]=mapp[a[head].x][a[head].y]+1;vis[newx][newy]=1;a[tail].x=newx,a[tail++].y=newy;}}}for(i=0;i<n;i++){for(j=0;j<m;j++) cout<<mapp[i][j]<<' ';cout<<endl;}return 0;
}

思路:用bfs向四方拓展求最短距离,以白为起点

四、第四题
代码:

#include <bits/stdc++.h>
using namespace std;
int v,g,mapp[17][27],ans[17],anss[17],i,j,need[27],p=30;
int judge(int x)
{for(i=1;i<=v;i++){int sum=0;for(j=1;j<=x;j++)sum+=mapp[ans[j]][i];if(sum<need[i]) return 0;}return 1;
}
void dfs(int x,int y)
{if(x>g){if(judge(y)){if(y<p){p=y;for(i=1;i<=p;i++) anss[i]=ans[i];}}}else{ans[y+1]=x;dfs(x+1,y+1);dfs(x+1,y);}
}
int main() 
{cin>>v;for(i=1;i<=v;i++) cin>>need[i];cin>>g;for(i=1;i<=g;i++) for(j=1;j<=v;j++) cin>>mapp[i][j];dfs(1,0);cout<<p<<' ';for(i=1;i<=p;i++) cout<<anss[i]<<' ';return 0;
}

思路:dfs深搜每种饲料,通过judge函数判断是否合理

总结:学会将过程分解为个个步骤,灵活套用dfs和bfs模板

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

uniapp插件uni-upgrade-center-app升级在vue3中报错

记录使用npx @dcloudio/uvm@latest更新uniapp cli版本vite-plugin-uni报错的问题 在uniapp的vue3中,引入升级路径后提示:pnpm i @dcloudio/uni-uts-v1@3.0.0-3061420221215001 -D;用vscode终端安装后打包过程中一直提示cli升级,升级后安装对应的uts依赖包,真机模拟报错,提…

009 自定义事件组件交互

自定义事件可以在组件中反向传递数据,PROP可以将数据从父组件传递到子组件,那么反向如何操作呢,就可以利用自定义事件实现$emit<template><h3>单文件组件</h3><button @click="sendHandle">发送数据</button></teplate><s…

文本编辑器bowpad修改文件编码

bowpad下方有显示当前编码,此处为codepage 1252在【工具栏 - 其他】处可修改编码,如图“载入为” - 以xx编码重新打开本文件 “转换到” - 将当前文件转换为xx编码支持的编码挺多的

分享一款免费的微信群活码、QQ群活码平台、短链平台-畅联活码

今天发现了一款免费的微信群活码、QQ群活码平台、短链平台-畅联活码,在这里分享给大家。平台网址是ewm.kzrcw.com,只需要简单注册后既可以使用了。操作简单。平台源码已经公开,下载地址http://www.80cxy.com/Blog/ResourceView?arId=202502131143553051Oa499Z。 1、什么是微…

80N10-ASEMI高速风筒专用MOS管80N10

80N10-ASEMI高速风筒专用MOS管80N10编辑:ll 80N10-ASEMI高速风筒专用MOS管80N10 型号:80N10 品牌:ASEMI 封装:TO-252 批号:最新 最大漏源电流:80A 漏源击穿电压:100V RDS(ON)Max:9.5mΩ 引脚数量:3 芯片个数: 沟道类型:N沟道MOS管、中低压MOS管 漏电流:ua 特性:…

离线安装docker对应的docker-compose包

1、找到docker对应的docker-compose包,我的docker版本是26.1,对应的docker-compose版本为v2.27.12、到官网下载docker-compose的离线包 下载地址:https://github.com/docker/compose/releases3、下载好离线包,把离线包放在指定目录下就不需要配置环境变量 `mv docker-compo…

用网络流建模解决最大密度子图问题

在图论中,子图是由原图的一部分节点和这些节点之间的边构成的图。图的密度通常是指图中边的数量与节点的数量之比。形式化地,对于一个图 $ H = (V, E) $,其密度定义为: \[\text{密度}(H) = \frac{|E|}{|V|} \]其中,$ |E| $ 表示图 $ H $ 中的边的数量,$ |V| $ 是图 $ H $…

设置snipaste自启动

右键图标 ——》 首选项 ——》开机自启动 参考——https://blog.csdn.net/weixin_45428910/article/details/127798513

PostgreSQL认证是什么,值得考吗

PostgreSQL认证是一种PG数据库能力认证,是对一个人在PostgreSQL方面的知识积累和技能实操的考核,判断此人是否能够胜任PostgreSQL相关工作的一种考核。 由于数据库行业是对技术要求非常高的一种产品,所以在使用之前需要对使用者有一定的要求,PostgreSQL认证就是其中一种方式…

从 Windows Forms 到微服务的经验教训

Photo by Dan Counsell on Unsplash如果说软件开发中有什么不变的东西,那就是变化。 在 .NET 生态系统中摸爬滚打的这二十年里,我见证了各种框架的起起落落,目睹了容器化的崛起,也曾为微服务架构摇旗呐喊——而在几年前,微服务对许多人来说还只是晦涩难懂的概念。 然而,如…

C#之MethodImpl(MethodImplOptions.Synchronized)

[MethodImpl(MethodImplOptions.Synchronized)] 是 C# 中用于指定方法同步的一个特性,它控制方法的执行方式,确保在多线程环境下某个方法的执行是线程安全的。它可以用来避免多个线程同时访问一个共享资源而导致的竞态条件。 private static int count = 0;//[MethodImpl(Met…

如何选择嵌入式主板厂家

选择合适的嵌入式主板厂商需要综合考虑技术、成本、服务等多个维度。以下是系统化的选择策略,结合关键因素和实际场景需求: 一、核心需求分析 1. 性能需求 处理器架构:是否需要x86(高性能计算)、ARM(低功耗)、RISC-V(定制化) 示例:边缘AI推理需选带NPU的ARM板(如…