随笔分类 - 编程
摘要:这道题呢需要方向数组跟别的差不多所以我就只写注意事项: 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行的等于号。 因为后面下山本来就是下降
阅读全文
这道题目与 重启系统(等级考试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>
阅读全文
摘要:题目: 数组意义: a字符数组:输入的数组一。 b字符数组:输入的数组二。 int 类型的t:存放strcmp(a,b)的结果。 那再说说思路,因为所以先统一为小写,再用strcmp就ok了。 上代码🐱🏍 #include <iostream> #include <cstring> #incl
阅读全文
摘要:题目: 变量意义如下: x:输入的数。 s[i]:x从个位数起(包括个位)的第i位数。(注意:此处数组一定要开在main主函数外) a:x的替身。(为了防止改变x) b:x的位数。 先说说我的思路: 用while算出x的长度并把x的每一位数放入s数组 。每进行一次循环b++,s[b]=a%10,a/
阅读全文
摘要:今天勤快懒亿点。就直接发题解了,明天再发思路。也会再在这儿放个思路链接。 题解: #include<bits/stdc++.h> using namespace std; int main() { long long n,a=1,b=0,c=0; cin>>n; for(int i=1;i<=n;i
阅读全文
摘要:题目描述: 有n 件物品和一个容量是m 的背包。每件物品只能使用一次。 第 i 件物品的体积是 vi,价值是 wi。 求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且总价值最大。输出最大价值。 输入格式 第一行两个整数,n,m用空格隔开,分别表示物品数量和背包容积。 接下来有 n 行,
阅读全文
摘要:1 #include<bits/stdc++.h> 2 using namespace std; 3 int main() 4 { 5 int n;//n:数组有几个数 6 cin>>n; 7 int a[1000];//a:存放数组 8 for(int i=1;i<=n;i++) cin>>a[i
阅读全文
摘要:1 #include<bits/stdc++.h> 2 using namespace std; 3 int main() 4 { 5 double n;//n:要游的距离 6 cin>>n; 7 double b=2;//b:已经走的步数 8 double by=2;//by:每步游的距离 9 i
阅读全文
摘要:1 #include<bits/stdc++.h> 2 using namespace std; 3 int z(int a) 4 { 5 if(a==2) return 1; 6 if(a==1) return 0; 7 for(int i=2;i*i<=a;i++) 8 { 9 if(a%i==
阅读全文
摘要:#include<bits/stdc++.h> using namespace std; int main() { int k,m=0,p=1;//p:给j个金币的第p天(1~j循环变化) cin>>k; for(int i=1,j=1;i<=k;i++)//i:天数,变化范围1~k,每次加1 {
阅读全文

浙公网安备 33010602011771号