
C++算法题
C++算法题
ଳxin
Great design comes from thinking!
展开
-
洗牌算法 高效且随机
package com.tencent.Static;import java.util.Random;public class tttt { /* * public int nextInt(int n) * 该方法的作用是生成一个随机的int值,该值介于[0,n)的区间, * 也就是0到n之间的随机int值,包含0而不包含n。 * * 时间复杂度O(3n)==O(n) * */ public static void flushArr.原创 2020-09-23 09:24:04 · 162 阅读 · 0 评论 -
表达式问题-C
表达式转后缀表达式:#include<stdio.h>#include<stdlib.h>#include<ctype.h> #include<assert.h>#define INITSIZE 20#define INCREMENT 10#define MAXBUFFER 20#define LEN sizeof(Elem...原创 2020-04-08 20:04:36 · 391 阅读 · 0 评论 -
集合运算器-C
顺序表:#include<stdio.h>#include<stdlib.h>#include<time.h>#include<set>#include<iostream>using namespace std;#define MAX 1000//冒泡排序void Sort(int *A,int len) { ...原创 2020-04-08 20:02:32 · 740 阅读 · 0 评论 -
文本编辑器-字符串与文件的应用
一、引入问题:二、代码:1. DevC++版本:#include<iostream>#include<cstdio>#include<cstring> #include<fstream> #include<vector>using namespace std;const int N=1e5+5;vec...原创 2020-03-27 09:30:40 · 423 阅读 · 0 评论 -
数组实现多项式加减乘-C
一、题目:二、代码:[用数组实现]#include<stdio.h>const int maxx = 1e3;struct Node{ int x; int m; int isok;//代表已经相加? };Node a[maxx];Node b[maxx]; int cnt1,cnt2;/*32 31 22 433 52 35 4...原创 2020-03-21 15:37:23 · 1010 阅读 · 0 评论 -
基于词频的文件相似度-算法应用
一、问题引入:二、分析:1.首先,我们从题目得知:文件相似度 = 公共词汇 / 总词汇2.注意的地方:不考虑中文,文章里只考虑有英文。3.输入: txt文件所在的文件夹目录三、代码分析:看代码 : 一般从main函数开始(程序入口同样也是main函数)1. 函数1 :在指定文件夹下找到对应的文件类型(后缀)的所有文件名称。所有文件名称保存...原创 2020-03-04 22:26:02 · 2076 阅读 · 2 评论 -
算法训练 - 第39级台阶
一、引入:如果我每一步只能迈上1个或2个台阶。先迈左脚,然后左右交替,最后一步是迈右脚,也就是说一共要走偶数步。那么,上完39级台阶,有多少种不同的上法呢?二、分析:一次迈 1个或2个 台阶;先迈左脚,然后左右交替,最后一步迈右脚,走偶数步 ,上39阶;递归。三、代码:#include<iostream>using namespace std;...原创 2020-02-25 12:24:19 · 427 阅读 · 0 评论 -
马虎的算式-C/C++
一、引入:假设 a b c d e 代表1~9不同的5个数字(注意是各不相同的数字,且不含0)能满足形如: ab*cde =adb*ce 这样的算式一共有多少种呢?二、分析:三、代码:1.dfs搜索法:2.暴力破解法:#include<iostream>using namespace std;int main(){ int a,b,c,d,e...原创 2020-02-23 17:24:10 · 817 阅读 · 0 评论 -
算法训练 - 高斯日记
一、引入:大数学家高斯有个好习惯:无论如何都要记日记。用一个整数表示:那一天是高斯出生后的第几天。高斯出生于:1777年4月30日。ex:在高斯发现的一个重要定理的日记上标注着:5343,因此可算出那天是:1791年12月15日。高斯获得博士学位的那天日记上标着:8113 请你算出高斯获得博士学位的年月日。提交答案的格式是:yyyy-mm-dd, 例如:1980-...原创 2020-02-23 12:29:18 · 645 阅读 · 0 评论 -
子集和问题-dfs回溯法
#include<iostream>#include<cstring>#include<algorithm>using namespace std;const int maxv=1e5+5;int n=0,res=0;int a[maxv];int b[maxv];int vis[maxv];int flag=0;void dfs(int ...原创 2019-12-19 10:16:17 · 324 阅读 · 0 评论 -
会场安排问题-贪心思想
#include<iostream>#include<cstring>#include<algorithm>using namespace std; struct meet{ int s; int e;}; bool cmp(meet a,meet b){ return a.e<=b.e;} int n;b...原创 2019-12-19 09:49:35 · 144 阅读 · 0 评论 -
DFS-地下停车场
题目描述小明在一个地下停车场入口,停车场有若干个路口,每个路口号码为1~n。每个路口有3个方向,左,前,右。小明在入口,即第一个路口,他要去的路口的号码是m。小明沿着路口的指示牌,能走到他要去路口吗?输入多组数据,每组数据n+2行。第一行为一个正整数n代表路口的个数,之后n行,这n行中的第i行为第i个路口的向左路口、向前路口、向右路口(0表示无路)。最后一行为一个正整数m代表出口路...原创 2019-12-09 22:07:40 · 143 阅读 · 0 评论 -
半数集问题-打印集合元素
1.题目描述:给定一个自然数n,由n开始可以依次产生半数集set(n)中的数如下:(1) n∈set(n);(2) 在n的左边加上一个自然数,但该自然数不能超过最近添加的数的一半;(3) 按此规则进行处理,直到不能再添加自然数为止。例如,set(6)={6,16,26,126,36,136}。半数集set(6)中有6个元素。注意,半数集是多重集。对于给定的自然数n,计算半数集se...原创 2019-12-08 16:29:46 · 322 阅读 · 0 评论 -
算法 - InsertSort [插入排序]
#include<iostream>#include<cstring> using namespace std;//1,2,3,4,5,4.5// k//插入排序 void insertsort(double a[],int k){ if(k==0) return ; insertsort(a,k-1); //对前k-1个元素排...原创 2019-08-17 17:00:00 · 269 阅读 · 0 评论 -
算法训练 - HDU1232-畅通工程[并查集入门]
HDU:http://acm.hdu.edu.cn/showproblem.php?pid=1232Problem Description:某省调查城镇交通状况,得到现有城镇道路统计表,表中列出了每条道路直接连通的城镇。省政府“畅通工程”的目标是使全省任何两个城镇间都可以实现交通(但不一定有直接的道路相连,只要互相间接通过道路可达即可)。问最少还需要建设多少条道路?Input:测...原创 2019-08-21 19:52:46 · 218 阅读 · 0 评论 -
安排比赛<Algrithm>
安排比赛// An highlighted block#include<stdio.h>#include<iostream>using namespace std;int main(){ int sum,k,l; int n[100000]; int i=0,j; while(1){ scanf("%d",&n[i]); if(n[i]=...原创 2019-05-29 23:36:02 · 486 阅读 · 0 评论 -
基于哈夫曼树的数据压缩算法
题目描述输入一串字符串,根据给定的字符串中字符出现的频率建立相应哈夫曼树,构造哈夫曼编码表,在此基础上可以对待压缩文件进行压缩(即编码),同时可以对压缩后的二进制编码文件进行解压(即译码)。输入:多组数据,每组数据一行,为一个字符串(只考虑26个小写字母即可)。当输入字符串为“0”时,输入结束。输出:每组数据输出4行:第一行为统计出来的字符出现频率(只输出存在的字符,格式为:字符:频度...转载 2019-05-30 22:04:44 · 2621 阅读 · 0 评论 -
求子串在母串中出现的次数(C++)
问题描述:求一个子串在母串中出现的次数。思路:1.用一个外循环,来遍历母串。2.指定两个指针p、q分别指向子串的首地址和母串的首地址;3.如果*p==q,则p++;q++;否则 母串首地址向后移动一个位置以及用break跳出比较内循环;4.判断q==‘\0’,如果是则:计数器++5.跳出外循环详细代码://C++#include<conio.h>#includ...原创 2019-05-30 17:43:20 · 4590 阅读 · 2 评论