C++
命z
2018.1.23
展开
-
【有重复数字的全排列_求法 & 计算个数】
输入一组数字(可能包含重复数字),输出其所有的排列方式。样例输入:[1,1,1,2]输出: [ [1,1,1,2], [1,1,2,1], [1,2,1,1], [2,1,1,1], ]最暴力的解法:当重复的数字不存在,做正常的全排列,最后在结果集中去重即可。另外一种解法:找重复数字在...原创 2020-03-30 22:54:41 · 4895 阅读 · 1 评论 -
算法【二分搜索?啥时候用】
在说二分搜索前先说一下二分查找。二分查找的前提条件的是有序的。这样才能保证每一次都排除一半的数据,时间复杂度才是O(logN)实现:#include <iostream>using namespace std;//二分查找 返回位置标号 时间复杂度O(logN) //参数:数组list,数组区间[left, right], 要查找的数numberint b...原创 2020-03-26 22:14:12 · 758 阅读 · 0 评论 -
算法-01背包问题【对于 f[i][j] 的 j 为不超过、恰好等于、剩余空间的详解】
对于01背包问题的三种情况以及代码分析有 N 件物品和一个容量是 V 的背包。每件物品只能使用一次。第 i 件物品的体积是 vi,价值是 wi。求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且总价值最大。输出最大价值。输入格式第一行两个整数,N,V,用空格隔开,分别表示物品数量和背包容积。接下来有 N 行,每行两个整数 vi,wi,用空格隔开,分别表示第 i 件...原创 2020-03-20 13:57:54 · 1158 阅读 · 2 评论 -
01背包问题【f [i][j] 为剩余空间情况——数组实现】
有 N 件物品和一个容量是 V 的背包。每件物品只能使用一次。第 i 件物品的体积是 vi,价值是 wi。求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且总价值最大。输出最大价值。输入格式第一行两个整数,N,V,用空格隔开,分别表示物品数量和背包容积。接下来有 N 行,每行两个整数 vi,wi,用空格隔开,分别表示第 i 件物品的体积和价值。输出格式输出一个...原创 2020-03-20 13:47:06 · 454 阅读 · 0 评论 -
01背包问题【f [i][j] 为恰好等于情况——数组实现】
有 N 件物品和一个容量是 V 的背包。每件物品只能使用一次。第 i 件物品的体积是 vi,价值是 wi。求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且总价值最大。输出最大价值。输入格式第一行两个整数,N,V,用空格隔开,分别表示物品数量和背包容积。接下来有 N 行,每行两个整数 vi,wi,用空格隔开,分别表示第 i 件物品的体积和价值。输出格式输出一个...原创 2020-03-20 13:42:28 · 468 阅读 · 0 评论 -
01背包问题【f [i][j] 为不超过 j 情况——数组实现】
有 N 件物品和一个容量是 V 的背包。每件物品只能使用一次。第 i 件物品的体积是 vi,价值是 wi。求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且总价值最大。输出最大价值。输入格式第一行两个整数,N,V,用空格隔开,分别表示物品数量和背包容积。接下来有 N 行,每行两个整数 vi,wi,用空格隔开,分别表示第 i 件物品的体积和价值。输出格式输出一个...原创 2020-03-20 12:50:54 · 232 阅读 · 0 评论 -
C/C++【函数形参 int a,int *a ,int &a的区别】
例子如下:#include<iostream>using namespace std;void swap1(int a, int b) { cout << "swap1中:&a="; cout << &a << " &b=" << &b << endl; int tmp =...原创 2020-03-07 15:59:38 · 3280 阅读 · 1 评论 -
C/C++中【变量、变量名、地址之间的关系】
变量:用来标识一块内存区域,即变量就是一块内存区域,而这个区域里面的值可以更改,故叫做‘变’量变量名:是一个标识符,用来指代一块内存区域,即变量,变量名并不占用内存空间,使用变量名让我们操作内存以区域、以块为单位,提高了方便性实例说明:编译:变量名是给编译器看的,编译器根据变量是局部还是全局分配内存地址或栈空间,所谓的变量名在内存中不存在,操作时转换成地址数存放在寄存器中了。编译器会将...翻译 2020-03-07 14:51:08 · 2367 阅读 · 1 评论 -
C/C++中 ' & ' 和 ' * ' 的区别和用法
当申明变量int * p 的时,表示p是一个储存地址的变量;比如int p=0,表示p指向地址为00000000的地址单元。当申明指针p之后,再用p表示p指向的储存空间的内容;&表示取变量的地址;#include<iostream>using namespace std;int main(){ int a=123; //&a表示a在内存中的地址...转载 2020-03-07 13:27:09 · 1389 阅读 · 0 评论 -
分治——大整数乘法(趣学算法)
问题分析:当分到只有一位数时候,问题将会变的简单。算法设计分析伪代码详解算法复杂度分析原创 2020-03-04 22:32:59 · 700 阅读 · 0 评论 -
约瑟夫问题
约瑟夫生者死者游戏约瑟夫游戏的大意:30个游客同乘一条船,因为严重超载, 加上风浪大作,危险万分。因此船长告诉乘客,只有将全船 一半的旅客投入海中,其余人才能幸免于难。无奈,大家只 得同意这种办法,并议定30 个人围成一圈,由第一个人数起,依次报数,数到第9人,便把他投入大海中,然后再从 他的下一个人数起,数到第9人,再将他投入大海中,如此 循环地进行,直到剩下 15 个游客为止。问:哪些位置是...翻译 2020-03-03 20:57:59 · 730 阅读 · 0 评论 -
k倍区间——前缀和
问题描述 给定一个长度为N的数列,A1, A2, ... AN,如果其中一段连续的子序列Ai, Ai+1, ... Aj(i <= j)之和是K的倍数, 我们就称这个区间[i, j]是K倍区间。 你能求出数列中总共有多少个K倍区间吗?输入格式 第一行包含两个整数N和K。(1 <= N, K <= 100000) 以下N行每行包含一个整数Ai。(1 &l...翻译 2020-02-29 14:09:50 · 426 阅读 · 0 评论 -
C++的函数c_str()的用法
语法:const char c_str();c_str()函数返回一个指向正规C字符串的指针, 内容与本string串相同.这是为了与c语言兼容,在c语言中没有string类型,故必须通过string类对象的成员函数c_str()把string 对象转换成c中的字符串样式。注意:一定要使用strcpy()函数 等来操作方法c_str()返回的指针比如:最好不要这样:char c;st...转载 2020-02-27 14:04:49 · 227 阅读 · 0 评论 -
C++中输入字符串的方法
cin、cin.get()、cin.getline()、getline()、gets()、getchar()cin://用法一:最常用、最基本的用法,输入一个数字:#include <iostream>using namespace std;main (){int a,b;cin>>a>>b;cout<<a+b<<end...转载 2020-02-23 21:31:09 · 1676 阅读 · 0 评论