获取电脑配置到txt

@echo off ipconfig /all >> information.txt echo.>> information.txt echo.>> information.txt echo.>> information.txt echo ***************************************************************************** >> information.txt echo.>> information.txt echo.>>
分类: 其他 发布时间: 06-16 23:46 阅读次数: 0

c语言亲戚计算器

#include<stdio.h> #include<string.h> #include<windows.h> //关系数值化 /* 1.爷爷 2.奶奶 3.伯父 4.叔叔 5.姑母 6.姑姐 7.自己/兄弟 8.自己/姐妹 9.外公 10.外婆 11.大舅 12.小舅 13.大姨 14.小姨 15.哥哥 16.弟弟 17.侄子 18.侄女 19.姐姐 20.妹妹 21.外甥 22.外甥女 23.自己/老公 24.自己/老婆 25.
分类: 其他 发布时间: 06-16 23:46 阅读次数: 0

c++数据结构与算法(1)——交换两个数的4种方法

#include <iostream> using namespace std; /*宏定义交换*/ #define SWAP(a,b,t) ((t)=(a),(a)=(b),(b)=(t)) /*指针交换*/ void swap_p(int* a, int *b); /*引用交换*/ void swap_r(int& a, int& b); /*模板交换*/ template <class T> void swap_t(T& a, T& b); int main(){ int a
分类: 其他 发布时间: 06-16 23:46 阅读次数: 0

【二叉树】二叉树中为某一值的路径

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/m0_38033475/article/details/91345248 大致思路: 二叉树嘛,就递归。这道题我用dfs来解决,找好临界条件,剪枝,注意vector存储的是数值不是结点。 有一个问题就是,我这样dfs得到的结果vector数组中,并不是按vector长度从大到小来排列的,因为dfs有可能左子树的更短但是先去看的左子树的路径。因此,需要对vector数组进行排序,并且记录数组下标,从
分类: 其他 发布时间: 06-16 23:45 阅读次数: 0

【链表】复杂链表的复制

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/m0_38033475/article/details/91346998 大致思路: 刚开始想的是新建一个链表,按next关系一个一个地复制,复制好再来管random。这个random指针是个问题,因为很难去知道“原链表里指向了a结点”这个a结点应该是新链表里的哪个结点,感觉需要去找个结点之间的对应关系,而结点值又不一定都不一样,所以只能通过“第几个”这种序号来找,那还是得挨个遍历嘛,很明显这个时
分类: 其他 发布时间: 06-16 23:45 阅读次数: 0

【大数运算】大数的阶乘

求大数阶乘的结果值 大致思路: 思路就是以int数组来存储一个Longlong都无法存储的大数。 注意每一位都代表数字中的每位的值,从低位到高位依次存储,比如12就存成[2,1] 阶乘嘛,N!=1*2*3*···*N 需要get到一个点:一个数乘上x,可以认为这个数的每一位都乘上x,只不过要考虑进位的问题。 那么就把temp=当前位*x的值,temp%10赋给当前位,num=temp/10赋给下一位,当然temp不一定只有两位数,当x很大的话比如x=100则就成三位数了,所以要循环地传递给下一
分类: 其他 发布时间: 06-16 23:45 阅读次数: 0

【大数运算】大数的加减乘除

大数加法 对于加法来说,思路和阶乘的一样,就是每一位每一位地依次来看。 首先把两个数都装进数组里,同时比较长度,(len1比len2长则之后只是依次加到len1长度),如果某位相加的结果>=10,则令m=1,否则m=0,让下一位记得加了之后再+m 代码via静之吾心 #include<stdio.h> #include<string.h> int x[100]={0},y[100]={0},z[105]={0};//将数组元素全部初始化为0 int main() { char a[100]
分类: 其他 发布时间: 06-16 23:45 阅读次数: 0

【树】二叉搜索树与双向链表

大致思路: 其实这种二叉树的题大多都用“递归”解决。只是这道题刚开始我没找到递归的思路。 如果有多个结点在子树中,就需要找清楚到底哪个才是根节点的前后结点。如: 可以知道,这显然就是按照树的中序遍历来的嘛。。 然后。。。分析了半天。。。因为二叉排序树的中序遍历本来就是有序的,所以其实就是中序遍历,只是要考虑个pre结点把前后关系连起来而已!! 这个代码我也是研究了一会儿的,注意pre指针是引用可变的。代码结构是中序遍历的结构,只是要搞清楚我当前要做什么,pre指针应该怎么变化。 AC代码: /
分类: 其他 发布时间: 06-16 23:44 阅读次数: 0

【递归】字符串的全排列

大致思路: 其实之前一直不能很好地理解全排列,直到看到一个有意思的解释。 全排列是由递归实现的,为了设计递归,只分析“当下”:针对第一个字符,我们有两种选择:第一是把这个字符放到组合中去(每个位置都可以放,所以遍历位置,与之后的每个元素都进行交换);第二是不把这个字符放到组合中去(其实就是和自身交换)。 同理,之后的每个字符都是这样操作。递归实现。临界条件是:当前针对的这个字符到了最后一个,那么此时这个字符串可作为一种可能的结果字符串。 注意点:对于字符串中字符交换函数,记得参数为“引用”类型
分类: 其他 发布时间: 06-16 23:44 阅读次数: 0

【位运算】Single Number I&II

single number I 这道题没毛病,利用异或^的特性,直接AC: class Solution { public: int singleNumber(int A[], int n) { int ans=0; for(int i=0;i<n;i++) ans = ans ^ A[i]; return ans; } }; Single Number II 大致思路: 之前是想要清除出现两次的位。这里是
分类: 其他 发布时间: 06-16 23:44 阅读次数: 0

【两个指针变位置】gas station

大致思路: 题意大概就是:一个环上N个站点,每个站点可以加油gas[i],每个站点到其下一个站点要消耗cost[i],问你能否找到一个起点能够走过环上所有点(终点==起点) 思路就是,可以理解到达每个站点其实要增加gas[i]-cost[i],当然这个数有可能是负数,但是一定要保证总油数sum>=0. 设一个start指针和一个end指针,如果加上之后sum>=0,则end++,否则就start--(因为start++只会让总油更少,只有回退start看看能不能在上一站得到正数的gas[i]-
分类: 其他 发布时间: 06-16 23:44 阅读次数: 0

【字符串】划分回文词

注意是划分回文词,不是去判断一个大串是否是回文串 大致思路: dfs去找就好了。 ·看到一个小结论:如果要求输出所有可能的解,往往都是要用深度优先搜索。如果是要求找出最优的解,或者解的数量,往往可以使用动态规划。 ·这里有一个很厉害的点:字符串的反向迭代器rbegin()和rend(),见图: 所以,判断一个字符串是否是回文,只需要一句话: return s == string(s.rbegin(),s.rend()); //看s的反向是不是等于s ·注意:字符串的substr(起点,子串长
分类: 其他 发布时间: 06-16 23:43 阅读次数: 0

【dfs】surrounded regions

这个和油田问题不同的点在于,油田问题是求有多少块O,而这个还有个限制条件是:这块O必须被X包围。 我最开始的想法就是dfs里再套一个dfs,就是不进找到是O,还要先去判断一下和它同一块的O没在边界上,再去把这一块O变成X。但是果然时间太多了!所以,看题解看到一个很“简单粗暴”的方法: 从四个边上的'O'开始深度优先搜索 将其标记为'a' 然后将剩下的'O'变成X 最后将'a'变回'O' AC代码: 链接:https://www.nowcoder.com/questionTerminal/c15
分类: 其他 发布时间: 06-16 23:43 阅读次数: 0

【unordered_set用法】求无序数组中的最长连续序列长度

大致思路: 之前我仅仅停留在数组的层面上思考问题,怎么想都是复杂度为O(n^2),但是应该换一种容器——unordered_set unordered_set是基于哈希表,采用的是链地址法解决冲突。用这个容器的目的在于,它的查找用find函数很方便而且查找的复杂度为O(1)!!!!这是很牛逼的地方!!!另外,使用erase函数也可以方便地对集合中的特定值元素进行删除。 所以,找到一个数,在表中删除它和它上下连成一片的数字,计算这一片有多长,更新长度最值。 AC代码: class Solutio
分类: 其他 发布时间: 06-16 23:43 阅读次数: 0

【层次遍历】Populating Next Right Pointers in Each Node

这个我自己一次性AC了,因为是完全二叉树,比较好讨论,用递归来做的。 AC代码: /** * Definition for binary tree with next pointer. * struct TreeLinkNode { * int val; * TreeLinkNode *left, *right, *next; * TreeLinkNode(int x) : val(x), left(NULL), right(NULL), next(NULL) {} * };
分类: 其他 发布时间: 06-16 23:43 阅读次数: 0

*【动态规划】求子序列的个数 distinct subsequences

大致思路: 其实本质是“求子序列的个数”。很明显,这种问个数的,一般用动态规划来做。 这道题和“求最长公共子序列”(https://blog.csdn.net/m0_38033475/article/details/79492786)有些类似。类似的地方在于:序列都是可以不连续的。不同的地方在于:最长公共子序列是两个序列都随便出,找相同序列的最长的长度;这道题是母串必须包含子串的全部,而且是问“个数/情况数”而非长度。 这两道题的对比是比较有意思的: 最长公共子序列的做法: for(int i
分类: 其他 发布时间: 06-16 23:42 阅读次数: 0

【动态规划】interleaving string 两个字符串交叉得到另一个字符串

大致思路: (via简书yoshino) 这种又是涉及两个子串的题,又用动态规划来做。但是有时候很不好想到动态规划的含义,我觉得就大胆一点吧....而且一般这种字符串的动态规划都是跟“长度”有关!然后再举简单的例子来模拟过程,从而设计出转移方程! 这道题过程看懂了就很好理解的,只是在编程要注意:dp数组下标从1开始,表示的是“第几个”或“有多长”,而字符串肯定是从0开始的。 AC代码: class Solution { public: bool isInterleave(string
分类: 其他 发布时间: 06-16 23:42 阅读次数: 0

矩阵的旋转

记住方法即可。(这里的矩阵都是方阵哈。) 矩阵的逆时针旋转90°:先把主对角线两边的元素互换,再把第i行和第n-i行互换。 矩阵的顺时针旋转90°:先把副对角线两边的元素互换,再把第i行和第n-i行互换。 比如,对于顺时针旋转90°的AC代码: void clockwise(int a[][4],int n) { for(int i=0; i<n; ++i) for(int j=0; j<n-i; ++j) swap(a[i][j], a[n-
分类: 其他 发布时间: 06-16 23:42 阅读次数: 0

【滑动窗口】判断s2是否包含s1的全排列

大致思路: s2必须要包含s1的某种排列,必须是包含的那种连续的。 刚开始我用全排列输出各种s1的排列,在递归的临界条件那儿判断是否被s2包含。显然,就算剪枝仍然超时,想想确实也是,人家递归类似于dfs是用来输出详细的组合信息的,而这里好像没这个必要这样做。不过,这个代码仍然有值得学习的地方:①输出全排列的递归算法温习(当前字符在或不在之后的组合中,若在则需要遍历位置);②判断两个字符串的包含函数:string.find是否==string.npos。不要和之前的“判断vector中是否存在f
分类: 其他 发布时间: 06-16 23:42 阅读次数: 0

【字符串】判断s2是否是s1的旋转字符串

题目 Assume you have a method isSubstring which checks if one word is a substring of another. Given two strings, s1 and s2, write code to check if s2 is a rotation of s1 using only one call to isSubstring ( i.e., “waterbottle” is a rotation of “erbott
分类: 其他 发布时间: 06-16 23:41 阅读次数: 0