![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Algorithm
Jeff_Winger
这个作者很懒,什么都没留下…
展开
-
三天打鱼两天晒网问题
假如渔夫在2000年1月1日在打鱼,请问2018年7月3日渔夫在干嘛?代码如下:int workThreeRestTwo(int year, int month, int day){//假设从2000年1月1日开始计算总共有多少天 int sum = 0; int Nums[13] = { 0,31,28,31,30,31,30,31,31,30,31,30,31 }; for (int ...原创 2018-07-03 23:28:46 · 737 阅读 · 0 评论 -
丢失的三个数
现在有一个数组,其值为从1到10000的连续增长的数字。出于某次偶然操作,导致这个数组中丢失了某三个元素,同时顺序被打乱,现在需要你用最快的方法找出丢失的这三个元素,并且将这三个元素根据从小到大重新拼接为一个新数字,计算其除以7的余数。 例:丢失的元素为336,10,8435,得到的新数字为103368435,除以七的余数为2。输入描述:输入数据为一行,包含9997个数字,空格隔开。...原创 2018-10-11 22:21:42 · 233 阅读 · 0 评论 -
C++中的log函数
引入#include<cmath>以e为底:log(exp(n))以10为底:log10(n)以m为底:log(n)/log(m)原创 2018-09-07 15:48:56 · 9294 阅读 · 0 评论 -
求两个字符串的最大匹配
给定两个字符串,例如 abceafg 和bcaedeafgabcea,求出它们两个最大的公有字符串,此题的解为最大长度是5,abcea。代码如下:#include<iostream>#include<string>using namespace std;int main(){ string str1, str2; getline(cin, str1)...原创 2018-08-21 15:55:38 · 2658 阅读 · 0 评论 -
寻找最短迷宫路径/电路布线问题(C++描述)
基本思想和寻找迷宫路径一致 https://mp.csdn.net/postedit/81980772 只是本文中找的是最短的路径,而这一思想也经常用于电路布线。主要方法是深度优先搜索和回溯法。基本的方法是从起始点开始,对其 上,右,下,左四个方向的位置进行距离标定,如果在某一方向上没有障碍物则标定此方向距离起始点的距离,并且将此方向的位置放入队列等待下次从此位置继续开始标定。当然如果有障碍物...原创 2018-08-23 23:47:56 · 1196 阅读 · 0 评论 -
寻找迷宫路径(C++描述)
一个迷宫可以用如下图描述 0表示可以通过,1表示有障碍物。问题是在图中是否可以找到一条路径,从入口(左上顶点)到出口(右下顶点)。主要思想是回溯法和深度优先搜索分析结合代码看会更好首先走一步,然后判断是否到达出口,如果没有到达出口,则找到要移动的相邻的一步,(1)找到了,则保持好当前的...原创 2018-08-23 15:30:32 · 2300 阅读 · 0 评论 -
爬楼梯问题
给定楼梯阶数,可以往上走1阶,也可以往上走2阶。试问有多少种方法可以爬完楼梯,并且输出具体的爬梯方案。这里运用递归回溯的方法。代码如下:#include<iostream>using namespace std;void climbStairs(int remainingSteps,int foot,int steps,int* process,int& coun...原创 2018-08-03 14:21:47 · 457 阅读 · 0 评论 -
打印一年中所有的星期三
假如要打印2018年所有的星期三,已知2018年的1月3号是新年的第一个星期三。 要知道润年是365天,也就是二月的最后一天是29号,平年是365天,二月的最后一天是28号。1,3,5,7,8,10,12月有31天,其余月是30天。我们可以用一个数组来表示每个月的天数。程序代码如下void printWednesday(){//2018年1月3号是星期三 int Nums[...原创 2018-07-03 23:19:46 · 418 阅读 · 0 评论 -
在矩阵中找目标值(搜索二维矩阵)
给一个mxn的二维矩阵,行和列上的元素都按值严格递增,没有重复,给定一个目标值,搜索此矩阵找此值,如果找到了返回值在矩阵中的位置,否则返回-1,-1。搜索的方法是先在矩阵对角线上搜索,如果小于左上角第一个元素,则说明矩阵中不存在目标值。如果值等于对角线上的某一元素,则直接返回。如果目标值介于对角线上某两个元素之间,则以这两个元素中大于目标值的元素为基准把矩阵分割成四部分,那么目标值有可能就在此...原创 2018-08-02 20:03:09 · 2262 阅读 · 0 评论 -
求图中三角形的个数(C++描述)
首先要给三角形的各个顶点标号,如右图所示。计算三角形的个数,首先要明确三角形的判定方法,怎么判断一个三角形是三角形。我们用边的相交来判定,在图中选择三条边,如果这三条边两两相交...原创 2018-08-02 14:34:28 · 4874 阅读 · 0 评论 -
求矩阵中的相邻数
给定一个矩阵,给定一个矩阵中的位置,求矩阵中和此元素相邻且相等的元素数目,所谓相邻是指元素在矩阵中上下左右的四个元素,而且此相邻性是可以传递的,即相邻的相邻也是相邻元素 解决此题的主要思想是递归回溯。在给定位置中向四个方向拓展,记录相等的元素数目,防止重复访问还要对符合要求的元素标记。然后在此元素的四个相邻位置递归此操作。代码如下:#include<iostream>...原创 2018-08-03 16:26:05 · 2757 阅读 · 0 评论 -
从有序数组中找出某个数出现的次数
int search(int* array,int size,int target,int flag){ int left=0,right=size-1; int mid=0,last=-1; while(left<=right) { mid=(left+right)/2; if(array[mid]>target){ ...原创 2018-07-30 11:11:17 · 3372 阅读 · 2 评论 -
给定一个无序整型数组,找出数组中未出现的最小正整数
题意理解,不是找到数组中最小的数减去1。而是假如把该数组排好序,在此有序数组中缺少的最小整数就是结果。题意的限定是正整数,所以可以以0为边界,只考虑0以上的数,因此结果要么在1~n之间,要么是n+1。我们的方法是以数组的下标为标准来比较,假如所有的i==ves[i]除了有一个j!=ves[j],那么j就是要找的数。除了0处的值之外,其他的值都满足i==ves[i],则结果与0处的值有关系。再假设一...原创 2018-11-13 10:54:27 · 4215 阅读 · 0 评论