摘要:
这道题呢需要方向数组跟别的差不多所以我就只写注意事项: dfs函数ans++的条件是k==n*m不是像其他题一样k>n*m. 主函数中初始点的vis要等于1. vis需要初始化. 程序: #include<bits/stdc++.h> using namespace std; int ans=0,n 阅读全文
摘要:
这道题的dfs: a b c d 这四个数 每次从中拿两个做+/-/*/÷ 这样就可以不考虑超级麻烦的括号问题, 举例a和b,有a+b,a-b,b-a,a*b,a/b,b/a 六种计算,a和b计算结果再和c,再和d进行计算,最后判断是否等于24. 具体实现: 1.建立i外循环 i:1~n;和内循环 阅读全文
摘要:
这道题目与 重启系统(等级考试4级 2021-03 T4)重启系统(等级考试4级 2021-03 T4) - 王浩泽 - 博客园 (cnblogs.com) 非常相似,于是乎呢就在这个程序上面改一改就AC了。 改的点: 因为题目中说,所以去掉了第16行以及第27行的等于号。 因为后面下山本来就是下降 阅读全文
摘要:
这道题如果没有一次重启系统的机会就相当于两个最长不下降子序列加在一起。 所以只需要改亿点点即可 把dp分为 dpleft 和 dpright 最长不下降子序列程序:最长上升子序列 II 时间复杂度(nlogn) - 王浩泽 - 博客园 (cnblogs.com) #include<bits/stdc 阅读全文
摘要:
题目: 此题目可转化为 01背包问题 dp[ i ] [ j ] [ l ] 表示i个精灵球、j点体力、l 个精灵时最多收复精灵的个数。 注意事项:开三维数组一定要贴着给的数据开,本题中开dp[1001][501][101],否则容易爆。 遍历范围: i:1~n j:1~m l:1~k w[l]: 阅读全文
摘要:
题目: 此题题干又臭又长,直接看简化版。 鸣人的影分身(等级考试4级 2021-03 T3)等效于 把m个苹果分到n个盘子中,问有几种可能? dp[i][j]表示有i个盘子j个苹果时有多少种放法。 用递归的方法来计算dp[n][m]。 一、递归函数的出口 (1)盘子数量不断减少所以当n==1时ret 阅读全文
摘要:
题目:最长上升子序列 II 给定一个长度为 N 的数列,求数值严格单调递增的子序列的长度最长是多少。 输入格式 第一行包含整数 N。 第二行包含 N个整数,表示完整序列。 输出格式 输出一个整数,表示最大长度。 数据范围 1≤N≤100000,−10e9≤数列中的数≤10e9 输入样例: 7 3 1 阅读全文
摘要:
题目: 程序: #include<bits/stdc++.h> using namespace std; int n; string s1; void dfs(int l,int r) { if(l==n&&r==n) { cout<<s1; cout<<endl; return; } if(l<r 阅读全文
摘要:
同志们,822题更优解他来啦! 经本人研究发现还可以用动态规划来写。 动态转移方程:dp[i][j]=dp[i][j-1]+dp[i-1][j];(因为只能向下或向右走所以可以从[i-1,j]和[i,j-1]来到[i,j]点) dp[i][j]:x值为i时,y值为j时最多有几种走到i,j点的可能。 阅读全文
摘要:
题目: 先讲变量 n:右下角的x值 m:右下角的y值 ans:答案(有几种可能) a数组:用来存储向下和向右的动作。 x:所在的位置的x值 y:所在位置的y值 x1:下一步可以走到位置的x值 y1:下一步可以走到位置的y值 题型:经典dfs。 代码: #include<bits/stdc++.h> 阅读全文