当前位置:网站首页>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
}
边栏推荐
- Li Chuang EDA learning notes 12: common PCB board layout constraint principles
- High quality coding tool clion
- First knowledge database
- Is it difficult for an information system project manager?
- Huawei BFD configuration specification
- 初识数据库
- The ECU of 21 Audi q5l 45tfsi brushes is upgraded to master special adjustment, and the horsepower is safely and stably increased to 305 horsepower
- How can large websites choose better virtual machine service providers?
- Pytorch代码注意的细节,容易敲错的地方
- 【LeetCode】Day96-第一个唯一字符&赎金信&字母异位词
猜你喜欢
Download, install and use NVM of node, and related use of node and NRM
Memory and stack related concepts
How to use the container reflection method encapsulated by thinkphp5.1 in business code
Li Chuang EDA learning notes 12: common PCB board layout constraint principles
Investment strategy discussion and market scale prediction report of China's solid state high power amplifier industry from 2022 to 2028
网络协议模型
Analysis of grammar elements in turtle Library
Is it difficult for an information system project manager?
ArcGIS应用基础4 专题图的制作
How Huawei routers configure static routes
随机推荐
Migrate Infones to stm32
Cognitive introspection
The ECU of 21 Audi q5l 45tfsi brushes is upgraded to master special adjustment, and the horsepower is safely and stably increased to 305 horsepower
As3013 fire endurance test of cable distribution system
Embedded interview questions (I: process and thread)
How can large websites choose better virtual machine service providers?
初识数据库
J'ai un chaton.
Summary of data sets in intrusion detection field
如何在业务代码中使用 ThinkPHP5.1 封装的容器内反射方法
大型网站如何选择比较好的云主机服务商?
【LeetCode】Day96-第一个唯一字符&赎金信&字母异位词
【课程笔记】编译原理
Hongliao Technology: how to quickly improve Tiktok store
Station B Liu Erden linear regression pytoch
Garbage collector with serial, throughput priority and response time priority
[string] palindrome string of codeup
OSPF configuration command of Huawei equipment
Cannot build artifact 'test Web: War expanded' because it is included into a circular depend solution
H3C防火墙RBM+VRRP 组网配置