算法
文章平均质量分 61
YCH带带我
嘤嘤嘤
展开
-
第四题 解析式表达式 北邮机试
用双栈实现表达式,与之前不同的是加入了单目运算符,用c++实现可能麻烦了些。当然,我写的不一定全部样例都过,发现还请指正。原创 2023-02-20 19:49:40 · 203 阅读 · 0 评论 -
中缀表达式转后缀表达式-栈实现简单的计算器功能
主要思路来自于本文是随便写的没什么很逻辑的结构,不同的人根据不同的中缀表达式写的不太一样,但是利用同样的计算方法结果相同,大概是数相加或者相减的顺序不同。此代码没有经过很多数据的测试,可能某些条件没写好,很可能有bug,发现时还望在评论区留言共同进步。/** * 用链表实现的栈; * */public class LinkedStack { class StackNode { public Object o = null; public StackNode原创 2021-08-11 18:40:40 · 136 阅读 · 0 评论 -
最小重量零件问题----分支限界法
#include<bits/stdc++.h>using namespace std;int part_n = 3;int service_m = 3;int max_value = 4;double **value_information;double *least_value;double **weight_information;double *least_weight;vector<int> Best_solution;double Best_weigh原创 2020-12-30 16:44:00 · 369 阅读 · 0 评论 -
旅行售货商问题----分支限界法(非优先队列)
#include<bits/stdc++.h>#include<queue>using namespace std;const int point_number = 4;///顶点个数double **Distance;///距离矩阵double Best_length = 1000000;///最优距离(开始时取较大值)vector<int> Best_solution;///最优解class Node{///结点public: double _原创 2020-12-23 20:11:52 · 325 阅读 · 0 评论 -
2020-12-21
#include <iostream>#include <algorithm>#include <iomanip>using namespace std;typedef struct Thing{ double weight; double value; int index;};Thing *things;const int goods = 7;//物品的数量int Max_Weigth = 150;//背包承受的重量int原创 2020-12-21 19:14:54 · 82 阅读 · 0 评论 -
旅行售货商问题----回溯法
#include <iostream>using namespace std;const int Inf = 10000000;//定义一个比较大的值const int number = 12;//度int information[2][number] = {{1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4}, {2, 3, 4, 1, 3, 4, 1, 2, 4, 1, 2, 3}};//边double Distance[number] = {30, 6, 4.原创 2020-12-20 19:34:08 · 346 阅读 · 0 评论 -
图的m着色问题----回溯法解决
#include <iostream>#include <algorithm>#include <iomanip>using namespace std;int information[2][22] = {{1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4, 5, 5, 6, 6, 6, 6, 7, 7, 7, 7}, {2, 6, 7, 1, 7, 3, 2, 7, 4, 6, 3, 5, 6, 4, 5, 4, 7, 1, 6, 1, 2原创 2020-12-19 20:39:57 · 294 阅读 · 2 评论 -
虚拟汽车加油问题
#include<iostream>using namespace std;int main(){ int drive;// 汽车加满油后走长度 int gas_number; // 加油站数 int *gas_pos, get_oil = 0; cin >> drive >> gas_number; gas_number++; gas_pos = new int[gas_number]; for(int原创 2020-12-14 22:00:43 · 274 阅读 · 0 评论 -
回溯法解决0-1背包问题----递归
#include <iostream>#include <algorithm>#include <iomanip>using namespace std;typedef struct Thing{ double weight; double value; int index;};Thing *things;const int goods = 7;//物品的数量int Max_Weigth = 150;//背包承受的重量int原创 2020-12-16 19:36:43 · 329 阅读 · 3 评论 -
回溯法解决0-1背包问题----迭代
#include <iostream>#include <algorithm>#include <iomanip>using namespace std;typedef struct Thing{ double weight; double value; int index;};Thing *things;const int goods = 7;//物品的数量int Max_Weigth = 150;//背包承受的重量int原创 2020-12-19 16:23:50 · 773 阅读 · 3 评论 -
实现哈夫曼编码
#include<iostream>#include<algorithm>#include<set>#include <queue>#include<string>using namespace std;typedef struct Node{ string name; int is; int value; Node* left; Node* right;};vector<Nod原创 2020-12-14 17:34:55 · 179 阅读 · 0 评论 -
独立任务最优调度问题-动态规划解决
问题描述:用2台处理机A和B处理n个作业。设第i个作业交给机器A处理时需要时间ai,若由机器B来处理,则需要时间bi。由于各作业的特点和机器的性能关系,很可能对于某些i,有ai>bi,而对于某些j,j≠i,有aj>bj。既不能将一个作业分开由2台机器处理,也没有一台机器能同时处理2个作业。设计一个动态规划算法,使得这2台机器处理完这n个作业的时间最短(从任何一台机器开工到最后一台机器停工的总时间)。研究一个实例:(a1,a2,a3,a4,a5,a6)=(2,5,7,10,5,2);(b1,b原创 2020-12-09 20:43:56 · 1869 阅读 · 2 评论 -
0-1背包问题的动态规划解决问题
#include <iostream>#include <time.h>#include <algorithm>#include <iomanip>using namespace std;const int goods = 5;//物品的数量int Max_Weigth = 10;//背包承受的重量int information[2][goods] = {{2, 2, 6, 5, 4}, {6, 3, 5, 4, 6}};//第一行为重量,第二原创 2020-11-30 20:42:29 · 142 阅读 · 0 评论 -
实现分治法求解棋盘覆盖问题
#include <iostream>#include <time.h>#include <algorithm>#include <iomanip>int **chess;using namespace std;int flag = 1;void Init_Chess(int x){ chess = new int*[x + 2]; for(int i = 0; i < x + 2; i++) {原创 2020-11-28 21:39:44 · 385 阅读 · 0 评论 -
二分搜索算法的实现
#include <iostream>#include <time.h>#include <algorithm>//二分法的递归实现using namespace std;int Recursion(int *list, int left, int right, int value){ if(left > right) return -1; int min_pos = (left + right) / 2; if(原创 2020-11-28 19:38:36 · 243 阅读 · 0 评论