- 博客(16)
- 收藏
- 关注
原创 C++ 无重复字符的最长字串
题目描述:给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。原题链接:力扣解题思路:采用滑动窗口进行求解,将未重复的子串一直保持在滑动窗口内,若窗口外的下一个字符与窗口内的任意字符相等,则移动左指针到窗口内相同字符的下一个索引,若没有相等的,则窗口向右扩展。值得注意的是:窗口双指针在初始化的时候,都是指向给定字符串的第一个索引,因此在while循环内部开始时,加判断条件if;并且在计算最大长度时要放置在right++的前面。// leetcode11_最长无重复子串.c
2022-05-02 14:55:43
1017
原创 C++ 0/1背包问题
编号 1 2 3 4 重量 2 3 4 5 价值 3 4 5 6 背包容量=8.求背包所能装物品的最大价值及物品的编码。思路:动态规划,在每个阶段的决策中,始终保持当前所完成的决策使得背包的价值是最大的。dp[i][j]:表示前i个物品能放入背包的价值为j。// 背包或购物单.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include <iostream&g
2022-05-01 16:55:13
1136
原创 C++ 判断输入的字符能否组成的水仙花数及其组数
问题描述:输入一组字符串,求字符串分组后,每组的和为水仙花数。(水仙花数是一个三位数,其个位、十位、百位的立方号等于其自身,如371=3^3+7^3+1^3)。// 水仙花数.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include <iostream>#include <string>#include <vector>using namespace std;int _tmain(int argc, _TC
2022-04-23 22:42:40
1213
原创 C++ 转骰子
题目描述:思路:在旋转的每个过程中,始终有2个面是不变的。剩余的四个面采用暴力列举方式。// 转骰子.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include <iostream>#include <string>using namespace std;int _tmain(int argc, _TCHAR* argv[]){ string str; cin >> str; string in
2022-04-23 15:27:53
1355
原创 C++ list及数组中数字相连输出问题
在C++中list作为双向链表,在数据的插入中相对于vector简直是太好用了。在list中向头尾插入数据或者删除数据的操作:list.push_back(); //在容器末尾插入一个元素list.pop_back(); //删除容器末尾的最后一个元素list.push_front(); //在容器开头插入一个元素list.pop_front(); //删除容器开头的第一个元素list.front(); //返回链表的第一个元素list.back(); //返回链表的最后一个元素
2022-04-22 22:10:41
2075
原创 C++ 十进制字符串转数字
描述:将"53,80,68,24,39,76,66,16,100,55,53,80,55"以输入字符的形式,转为数字,并存入数组中。思路:单个字符(0-9)转数字:char single='1';int data=single-'0';cout<<data<<endl;输出结果: 对于大于9以上的数字字符,并且在连续的字符串中,且数字之间用逗号分隔的情况下,采用滑动窗口的方法,每次进行字符串的截取操作,采用stoi函数进行数字字符转数字的操作#in
2022-04-03 01:06:48
435
原创 C++ 24点游戏算法
原题链接:24点游戏算法_牛客题霸_牛客网描述给出4个1-10的数字,通过加减乘除运算,得到数字为24就算胜利,除法指实数除法运算,运算符仅允许出现在两个数字之间,本题对数字选取顺序无要求,但每个数字仅允许使用一次,且需考虑括号运算此题允许数字重复,如3 3 4 4为合法输入,此输入一共有两个3,但是每个数字只允许使用一次,则运算过程中两个3都被选取并进行对应的计算操作。输入描述:读入4个[1,10]的整数,数字允许重复,测试用例保证无异常数字。输出描述:对于每组案例,输出一行表
2022-04-01 00:01:59
6186
1
原创 C++ 和为S的连续正整数之和
原题链接:力扣输入:一个正整数 target输出:所有和为 target 的连续正整数序列(至少含有两个数)。序列内的数字由小到大排列,不同序列按照首个数字从小到大排列。思路分析:连续的正整数,可以采用暴力循环,也可以采用滑动窗口(双指针),这里采用双指针。左右边界分别为left和right,初始化left=1,right=2,在数学中连续的正整数之和为sum=(left+right)*(right-left+1)/2。自始至终从左往右。(1)如果窗口内的值大于target,说明窗口大了,l
2022-03-29 00:21:03
1790
原创 C++句子逆序
原题链接:句子逆序_牛客题霸_牛客网输入描述:输入一个英文语句,每个单词用空格隔开。保证输入只包含空格和字母。输出描述:得到逆序的句子#include <iostream>#include <string>#include <stack>using namespace std;int main(){ string str,temp; stack<string>stk; while(getline(cin,
2022-03-28 00:15:07
744
原创 C++查找两个字符的最长公共子串
原题链接:查找两个字符串a,b中的最长公共子串_牛客题霸_牛客网描述:查找两个字符串a,b中的最长公共子串。若有多个,输出在较短串中最先出现的那个。注:子串的定义:将一个字符串删去前缀和后缀(也可以不删)形成的字符串。请和“子序列”的概念分开!输入描述:输入两个字符串输出描述:返回重复出现的字符#include <iostream>#include <string>#include <vector>using namespace
2022-03-26 00:44:17
1876
原创 C++矩阵相乘
原题链接:矩阵乘法_牛客题霸_牛客网题目:如果A是个x行y列的矩阵,B是个y行z列的矩阵,把A和B相乘,其结果将是另一个x行z列的矩阵C。输入描述:第一行包含一个正整数x,代表第一个矩阵的行数第二行包含一个正整数y,代表第一个矩阵的列数和第二个矩阵的行数第三行包含一个正整数z,代表第二个矩阵的列数之后x行,每行y个整数,代表第一个矩阵的值之后y行,每行z个整数,代表第二个矩阵的值输出描述:对于每组输入数据,输出x行,每行z个整数,代表两个矩阵相乘的结果。#include
2022-03-25 23:42:33
887
1
原创 C++迷宫问题
采用广度优先搜索。首先从根节点出发,将当前节点四个方向的所有可达子节点依次访问,存到队列中,并且再father数组中记录子节点的父节点,然后再根据队列依次访问子节点,一直下去直到所有节点被遍历。访问到(n-1,m-1)节点时,说明已经找到一条路径,可以从(n-1,m-1)搜索father数组找到 这条路径,但是这个路径顺序是反的,因此,用一个栈存父节点,最后输出这个栈就是从(0,0)到(n-1,m-1)的路径
2022-03-23 00:02:59
3459
原创 C++最小路径和
题目:给定一个n * m的矩阵a,从左上角开始每次只能向右或者向下走,最后到达右下角的位置,路径上所有的数字累加起来就是路径和,输出所有的路径中最小的路径和。输入描述:第一行输入两个整数 n 和 m,表示矩阵的大小。接下来 n 行每行 m 个整数表示矩阵。输出描述:输出一个整数表示答案。输入4 41 3 5 98 1 3 45 0 6 18 8 4 0输出12#include "stdafx.h"#include <iostream...
2022-03-20 01:22:33
547
原创 C++实现输入字符串中查找子串出现的次数并输出索引
算法小白,不喜勿喷。谢谢第一行:输入字符串;第二行:输入子串;输出:子串在字符串中出现的次数,并输出第一个字符所在字符串中的索引#include "stdafx.h"#include <iostream>#include <vector>#include <string>using namespace std;void display(string s);void play(vector<int> vect); int _t
2022-03-19 23:58:24
1717
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人