- 博客(16)
- 收藏
- 关注
原创 HDOJ1026
思路是用BFS来搜索路径,将路径存储在对应的数组中,同时定义一个优先队列来处理与士兵战斗的时间。具体解法见代码中的注释。//// main.cpp// hdoj-test//// Created by willam huang on 2018/4/6.// Copyright © 2018年 willam huang. All rights reserved./...
2019-06-11 22:14:43 182
转载 hdoj-1024-c++
动态规划,看半天没看懂。。。贴个网址,之后碰到不同类型的再仔细研究吧。https://www.cnblogs.com/dongsheng/archive/2013/05/28/3104629.html
2018-08-08 20:43:41 207
原创 hdoj-1022-c++
题目理解的一个要点是进站并不是一次性进完的,否则就太简单了。可以进一部分,出一部分,再进一部分。。。直到满足出站顺序要求。理解了题目后即可得知,是一个模拟栈的问题,则关键思路是每次push之后,检查top是否符合当前index指向 的out序列中的值,若相等则pop,否则继续push(每一步都要注意修改对应index)。附代码:#include <iostream>#i...
2018-08-02 20:48:56 184
原创 hdoj-1021-c++
思路:不能用循环,会超时,简单计算一下各个数对3的模可以发现规律为12022101的循环,则问题就简单了。注意一下输入输出就好(在这上面耗了一会儿,zz了)附代码:#include <iostream>using namespace std;int main(){ int n; while(cin>>n){ if(n%8==2||n%8==6) ...
2018-05-01 23:42:06 128
原创 hdoj-1020-c++
思路:一个int变量记录同一个字母重复的个数,不断判断当前字母是否和下一个相同,若相同,count++,若不同,输出结果。附代码:#include <iostream>#include <string.h>using namespace std;char orig[10000];int main(){ int N,count; cin>>N; ...
2018-05-01 23:18:58 137
原创 hdoj-1019-c++
思路:核心思路是不断地对两个数求最小公倍数,具体算法为最小公倍数=a*b/最大公约数,而最大公约数可以用gcd函数计算(第一次了解)。附代码:#include <iostream>using namespace std;int gcd(int a,int b);int N,m;int main(){ cin>>N; while(N--){ int ...
2018-04-24 23:48:46 165
原创 hdoj-1018-c++
思路:一开始想的字符串或者数组,但是仔细一想这么大的数还是阶乘,算出来肯定不现实。所以从只计算位数的角度思考了一下,直觉用对数可以降低计算成本。具体思路参见https://blog.csdn.net/wy_wind/article/details/41264203附代码:#include <iostream>#include <math.h>using namespace ...
2018-04-23 23:40:01 117
原创 hdoj-1017-c++
思路:数据很小,循环遍历即可,重点倒是在如何判断整数上纠结了一会儿。附代码:#include <iostream>using namespace std;int count(int n,int m);int main(){ int N,n,m,result; cin>>N; while(N){ int i = 1; while(...
2018-04-23 23:22:38 223
原创 hdoj-1002-c++
思路:用字符串来存储大整数,关键在于实现进位,可以先倒序(这样方便位数需要增加的情况)相加,然后再倒叙输出。结果:AC不附代码了,太懒没有写,直接贴别人的解法。https://blog.csdn.net/ironyoung/article/details/45420161...
2018-04-10 23:02:50 310
原创 hdoj-1013-c++
思路一:输入整数,计算位数之和,然后若大于10则循环计算。结果:wrong answer,看了网上分析,应该是要适应非常大数的计算,所以应该用string来存储输入的数。思路二:用string存储输入的数,同时发现,最后的结果是原始数各位数之和sum,(sum-1)%9+1,原来是个数论的题(当然也可以仿照思路一,循环计算)结果:坑之处在于我的编译器和oj的编译器版本有出入,结果死活compila...
2018-04-10 00:17:01 288
原创 hdoj-1012-c++
思路:两次递归,一次算阶乘,一次算求和,主要注意输出格式吧结果:一开始循环时,阶乘忘记循环开始重设temp的值等于1了,最后改过来,AC。附代码:#include <iostream>#include <math.h>#include <iomanip>using namespace std;double cale(int n);int main(){ i...
2018-04-09 23:32:14 146
原创 hdoj-1010-c++
思路:DFS(深度优先搜索),基本参照dfs的框架写就好。结果:第一次自己的代码超时了。。后来查看了通过的代码(参照https://blog.csdn.net/u014174811/article/details/41293209)后发现可能是我多使用了一次循环来申请空间——而参考代码是直接利用了规则(图大小不超过7*7),可能申请空间的循环需要花费额外的时间(毕竟AC的代码时间是998ms,仅比...
2018-04-06 23:22:01 125
原创 hdoj-1009-c++
思路:将输入的J[i]和F[i]按照J/F的大小排序,从收获最大的开始,每次交易,总量加上J[i],M减去F[i],直到M不够支付一次完整的交易,最后一次按照M剩下的数量全部交易掉,得到结果。结果:莫名其妙错了好几次,最后按照网上大神的代码重新改过就AC了。一个需要注意的问题,如果定义数组A存储J/F的值,则对A调用sort后,并不会改变J和F的排列,必须要定义结构体数组,并且自定义结构体比较函数...
2018-04-06 10:24:40 111
原创 hdoj-1006-c++
思路一:按秒数1s1s遍历43200秒,对满足条件的秒数进行统计结果:答案错误,问题在于原题是连续时间(角度连续变化)的,用离散的方法肯定不行。思路二:参考网上的解法,使用角速度相减算周期的方法具体参考 https://blog.csdn.net/sinat_18897273/article/details/71191038的解法。结果:顺利AC。提醒:需要将所有数据设置为double类型,设置为...
2018-04-03 22:46:43 222
原创 hdoj-1005-c++
思路一:循环计算,直到第n个值结果:超时;思路二:用一个100大小的数组记录前100个结果,直到再次出现1,1且不为第一第二个时,出现循环,然后用(n-1)%i——i为周期长度——计算第n个值结果:忽略了可能不以1,1为开头的循环,例如1,1,2,3,0,4,2,3,0,4.......思路三:仔细分析,只需7*7个数必定出现循环(因为模7只能出现7种结果),所以直接以49作为周期,其余同思路2结...
2018-04-02 23:21:32 178
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人