数据结构与算法
拓跋梁哲
这个作者很懒,什么都没留下…
展开
-
利用C++中的面向对象的思想实现的顺序表
#pragma oncetypedef int DataType;#define LISTSIZE 100class SqList{private: DataType items[100]; int length;public: SqList(); ~SqList(); int Length(); bool IsEmpty(); bool Insert(int pos, DataType item...原创 2018-06-15 10:07:08 · 487 阅读 · 0 评论 -
【OJ】1089: 丑数
详尽代码和说明如下:#include<stdio.h>long long min(long long&a, long long &b,long long &c,long long&d){ long long m = (a>b)?b:a; long long n = (c>d)?d:c; return ...原创 2018-11-29 12:09:28 · 429 阅读 · 0 评论 -
【算法】1089:有序合并
这个实现起来不难,我就不说了,记录下我在其中遇到的坑,就是我调用了rewind(stdin)这个函数来清空输入缓冲区,结果在线OJ老是给我报输出超限,让我找这个错误找了好久,找到我心都碎了........这里为什么要清空输出缓冲区呢,就是因为在第一行输出完成之后还要键入一个Enter,进入下一行的输入,所以我写程序的时候用了rewind(stdin)这个函数,结果困扰了许久。话说回...原创 2018-10-17 17:51:47 · 317 阅读 · 0 评论 -
【LintCode】41. 最大子数组
要求时间复杂度为O(n);设F[n]为以下标为n的nums[n]结尾的连续子序列的最大和,那么显然F[0]=nums[0];所以根据动态规划的思想有:F[n] = max(F[n-1]+nums[n], nums[n]);所以写出动态规划的程序:(动态规划的核心体现在编程上就是反复的读取数据、计算数据、存储数据)int maxSubArray(vector<int&...原创 2018-10-17 14:03:09 · 269 阅读 · 0 评论 -
【OJ】1075: 多个数的最小公倍数
这个题目不难,时间复杂度可以在O(n)内搞定,具体分析见代码:#include<stdio.h>int gcd(int a, int b) {// 求a、b的最大公约数 while (b != 0) { int r = a%b; a = b; b = r; } return a;}int main(){ int n; while (scan...原创 2018-10-19 16:21:38 · 492 阅读 · 0 评论 -
【OJ】1082: 水池
这一题也是BFS的问题,这一题最关键的是:每调用一次BFS,就将所有水池的位置全部改成0,这样调用BFS多少次,就有多少个水池。具体分析且见代码: #include<stdio.h>#include<algorithm>#include<queue>using namespace std;// 定义状态struct Statu...原创 2018-10-19 15:49:20 · 372 阅读 · 0 评论 -
【OJ】1086: 地砖问题
这个问题在理解了BFS算法之后就能很快的写出了,个人感觉BFS和DFS就是状态之间的转换,就是从一个状态转移到另外一个状态,所以我首先定义好了状态,具体的事宜且见下面的代码:#include<stdio.h>#include<algorithm>#include<queue>using namespace std;// 定义状态st...原创 2018-10-19 14:59:20 · 1329 阅读 · 0 评论 -
+-字符串
分析:输出-1的情况:两个字符串的长度不相同或者两个字符串中的+的个数不相同非-1的情况: 要想变换的次数最少,并且相邻两个字符交换,那就需要记录两个字符串中每i个+(或-)号的位置,即第一个串中的第i个+(或-)号和第二个串中的第i个+(或-)号的位置,将这两个位置的差加起来,就是最少的 操作次数实现代码:#include<stdio.h>#include&l...原创 2018-10-15 19:56:05 · 340 阅读 · 0 评论 -
【OJ】1014: 第几天
这一题就是要干掉输入中的那个'/',直接提取到年份、月份和日期,且看代码实现:#include<stdio.h>bool isLeap(int year) { if (year % 4 == 0 && year % 100 != 0 || year % 400==0) { return true; // 1 } else { return f...原创 2018-10-18 15:02:45 · 418 阅读 · 0 评论 -
【OJ】1033: 奇怪的餐厅
刚刚开始没有弄清楚题目意思,这题的关键就是每次选择那个折扣率最小的那个人付钱,就是用到了贪心的思想,具体的分析与其中的坑且见代码:#include<stdio.h>#include<stdlib.h>#include<algorithm>#include<string.h>using namespace std;struc...原创 2018-10-18 14:36:45 · 697 阅读 · 0 评论 -
1010: 机器人走迷宫
实现代码:#include <iostream>#include <stdio.h>#include <string.h> #include <algorithm>#include <vector>#include <queue>using namespace std;/* run this pro...原创 2018-10-13 13:31:49 · 1827 阅读 · 0 评论 -
【OJ】1016: 序列求平均
具体的分析且见代码:#include<stdio.h>#include<stdlib.h>#include<vector>using namespace std;int main(){ int n, m; int temp[101];// 因为题目中说n不会超过100 所以先生成所有的需要的数 temp[0] = 2; for...原创 2018-10-17 23:24:25 · 539 阅读 · 0 评论 -
【算法】1090: 十六进制转换
这个题目实现起来不是很难,因为一位16进制数可以用4位二进制数来表示,一位8进制数可以用3位二进制数来表示,这样通过二进制数便在16进制数和8进制数之间架起了桥梁。这里我直接采用C++中的string类来写,方便快捷,可行性高,但有些地方需要注意,有些地方仍然值得在以后的编程中借鉴,且看代码:#include<string>#include<iostream&...原创 2018-10-17 21:30:02 · 1143 阅读 · 0 评论 -
利用C++中的<string>类实现KMP算法
KMP算法真的是“大牛”算法,我想了好几天才把它真正弄懂实现出来,真真不容易!啥都不说了,代码说明一切。#include<iostream>using namespace std;#include<string>int Brute_Force(string S, string T) { unsigned int i = 0; unsigned int j...原创 2018-06-18 22:00:16 · 1779 阅读 · 0 评论 -
利用C++中的<string>类实现Brute-Force算法
Brute-Force算法简称BF算法,即暴风(Brute Force)算法,是普通的模式匹配算法,BF算法的思想就是将目标串S的第一个字符与模式串T的第一个字符进行匹配,若相等,则继续比较S的第二个字符和 T的第二个字符;若不相等,则比较S的第二个字符和T的第一个字符,依次比较下去,直到得出最后的匹配结果。 BF算法是一种蛮力算法。#include<strin...原创 2018-06-15 20:21:40 · 766 阅读 · 0 评论 -
【OJ】约瑟夫环问题
#include<stdio.h>class Person{public: int name; bool flag;};int main(){ int m = 0; // 一共m个人 int n = 0; // 从1开始报数 报到n的那个人出列 scanf("%d%d",&m,&n); n = n-1;...原创 2018-11-25 15:30:58 · 1635 阅读 · 0 评论