大臣的旅行费用与递归

发布时间:2024-12-18 13:30

旅行的真谛是回归内心,找到平衡与宁静 #生活知识# #生活理念# #旅行文化理解#

递归程序如何编写

最新推荐文章于 2022-03-16 22:56:57 发布

浮尘~ 于 2019-03-20 22:11:11 发布

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

博客探讨了如何编写递归程序,以解决大臣J在T王国旅行时的最大花费问题。给定城市间的道路和距离,J大臣从一个城市出发到另一个城市,中间不休息,目标是找出所有可能路线中费用最高的。文章提供了输入输出格式,样例输入和输出,以及资源限制,挑战读者设计一个不超过64MB内存和5秒CPU消耗的解决方案。

摘要由CSDN通过智能技术生成

递归程序如何编写:

1.确定出口(剪枝)叶子节点,数组边界,
2.确定参数(一般有每次递归会变得参数(递归层数,距离之和),此层相关的数组下标(节点标号),求解的一般是最值,可以设置为全局变量,还有权重数组,ans,vis,节点数量)
3.回溯(递归过程中,如果改变了节点的属性,需要把它改回来,例如全排列的swap两次,比如bfs可能需要考虑是否访问)
4.dfs中的for循环(或者几个dfs连在一起)的意思是想要把当前一层的所有下一层可能遍历一次

#include<iostream> #include<algorithm> using namespace std; int n; //非字典序方法一:递归确定第一个,然后确定后面n-1个全排列 //void swap(int i, int j, int a[]) { // int t = a[i]; // a[i] = a[j]; // a[j] = t; //} // //void dfs(int flag, int a[]) { // if (flag == n - 1) { // for (int i = 0; i < n; ++i) { // printf("%d",a[i]); // } // // } // for (int j = flag; j <n ; ++j) { // swap(flag,j,a); // dfs(flag+1,a); // swap(flag,j,a); // } //} // // //int main() { // scanf("%d", &n); // int a[n]; // for (int i = 0; i < n; i++) { // a[i] = i+1; // } // dfs(0, a); // return 0; //} //方法二:字典序:从右想左先找到相邻的左边比较小的(12354找到3)pi,然后从右向左Pn-1 - pi找到第一个大于pi的pj,将pi,pj交换,将pi之后的反转。 //

123456789101112131415161718192021222324252627282930313233343536373839

网址:大臣的旅行费用与递归 https://www.yuejiaxmz.com/news/view/509023

相关内容

带女儿探索大理与丽江:亲子旅行费用解析与云南旅游经验分享
吉林大药房+汤臣倍健=不一样的26周年同庆!
递归思想——关于递归的多个例子详解
旅行的唯美句子大全
单身旅行费用单身旅行省钱七大窍门
单身旅行费用:单身旅行省钱七大窍门
“旧物传递,与爱同行”淘宝大市场活动举行
Python中递归阶乘
新疆旅行费用大概多少,新疆旅行花费,分享省钱小技巧
NIIMBOT精臣

随便看看