当前位置:网站首页>Luogu p1460 [usaco2.1] healthy Holstein cows
Luogu p1460 [usaco2.1] healthy Holstein cows
2022-07-06 05:59:00 【Study_ Study_ X】
Portal :https://www.luogu.com.cn/problem/P1460
I wrote this problem solution because my understanding of the problem is right , The thinking is clear . But in DFS There is a lack of skill in the code, which makes it impossible to write completely AC Code for . From the solution to the question, I am right DFS The parameter list of function definition has been further understood , stay DFS In the algorithm, , The definition of parameter list is also extremely important , Defining parameter lists skillfully can reduce the complexity of code , It also makes the idea of writing questions clearer .
meanwhile , To and DFS Tag access and tag removal are also clearer , It's a lot better than the first day when I didn't know where to start , Continue refueling !
Get down to business . This topic is still a two-way search , For each feed , You can choose to add or not . It also needs to be set visit Array to save the access path . After each visit, the status at this time needs to be determined , Whether the conditions are met , If the conditions are met, return and compare the answers to determine whether to update the answers , If the conditions are not met, continue to search downward .
Code up , The notes are fairly detailed .
#include<iostream>
using namespace std;
int Vitamin[30][30] = { 0 }, Need[30] = { 0 };
// The two arrays are the vitamin content of feed , Vitamins needed by cattle
int visit[30] = { 0 }, Anvisit[30] = { 0 }, ans = 5000;
//visit Used to store the current feed number ,Anvisit Feed number for storing answers
//ans Store the number of answers , The initial value is a relatively large number
int v = 0, g = 0;
//v,g Meaning the title has , Don't go into
bool Judge(int amount)
{
// This function is used to judge whether the requirements have been met in the current situation
//amount Is the total amount of feed that has been fed
if (!amount)return false;
// If one kind of feed is not added directly pass
for (int i = 1; i <= v; i++)
{
int sum = 0;
for (int j = 1; j <= amount; j++)
sum += Vitamin[visit[j]][i];
// Add up , Calculate the content of each vitamin
if (sum < Need[i])return false;
// Once there is a direct false
}
return true;
}
void DFS(int number,int count)
{
//number Number the feed ,count Is the total feed
// Setting parameters in this way can largely avoid thinking too complicated
if (number > g)
return;
// The border
if (Judge(count)) {// If the conditions are met
if (count < ans) {// And the new answer is smaller than the original answer
ans = count;
for (int i = 1; i <= count; i++)
Anvisit[i] = visit[i];
// Update answers
}
return;
// Mission accomplished , Go straight back to , There is no need to go down
}
visit[count + 1] = number + 1;
// Prepare to visit , Mark first
DFS(number + 1, count + 1);
// Visit the next feed and add
visit[count + 1] = 0;
// Access to the end , Eliminate marking
DFS(number + 1, count);
// Visit the next feed without adding
}
int main(void)
{
scanf("%d", &v);
for (int i = 1; i <= v; i++)
scanf("%d", &Need[i]);
scanf("%d", &g);
for (int i = 1; i <= g; i++)
for (int j = 1; j <= v; j++)
scanf("%d", &Vitamin[i][j]);
// A bunch of inputs
DFS(0, 0);
// Pay attention to search from zero , Because number one also needs to search for two ways to add or not add
printf("%d", ans);
for (int i = 1; i <= ans; i++)
printf(" %d", Anvisit[i]);
return 0;// End of the flower
}
边栏推荐
- 查询生产订单中某个(些)工作中心对应的标准文本码
- [experience] when ultralso makes a startup disk, there is an error: the disk / image capacity is too small
- Database: ODBC remote access SQL Server2008 in oracel
- B站刘二大人-反向传播
- Download, install and use NVM of node, and related use of node and NRM
- Station B Liu Erden softmx classifier and MNIST implementation -structure 9
- 进程和线程
- Construction of yolox based on paste framework
- Novice entry SCM must understand those things
- Investment strategy discussion and market scale prediction report of China's solid state high power amplifier industry from 2022 to 2028
猜你喜欢
YYGH-11-定时统计
Processes and threads
Winter 2021 pat class B problem solution (C language)
Market development prospect and investment risk assessment report of China's humidity sensor industry from 2022 to 2028
Huawei BFD configuration specification
[SQL Server fast track] - authentication and establishment and management of user accounts
P2802 回家
ContentType的作用
[Jiudu OJ 08] simple search x
Mysql database master-slave cluster construction
随机推荐
如何在业务代码中使用 ThinkPHP5.1 封装的容器内反射方法
P2802 回家
Redis消息队列
MIT6.s081-2020 Lab2 System Calls
Station B Liu Erden - linear regression and gradient descent
B站刘二大人-反向传播
C language bubble sort
AUTOSAR从入门到精通番外篇(十)-嵌入式S19文件解析
网络协议模型
B站刘二大人-线性回归及梯度下降
wib3.0 跨越,在跨越(ง •̀_•́)ง
Web service connector: Servlet
[happy Spring Festival] if you feel happy, dance
入侵检测领域数据集总结
(5) Explanation of yolo-v3 core source code (3)
Auto.js学习笔记17:基础监听事件和UI简单的点击事件操作
局域网同一个网段通信过程
Configuring OSPF GR features for Huawei devices
Yygh-11-timing statistics
What preparations should be made for website server migration?