代码
Persistence_Y_1
这个作者很懒,什么都没留下…
展开
-
C++求数组中最大子段和补充
求最大字段和int FindGreatestSumOfSubArray(vector<int> array) { int Max = array[0]; int * f = new int[array.size() + 1]; f[0] = array[0]; for (int i = 1; i < array.size(); ++i) { f[i] = max...原创 2019-12-08 23:11:33 · 148 阅读 · 0 评论 -
C++模拟扑克牌的实现
#include <iostream>#include <ctime>using namespace std;enum{ SPADES, HEARTS, CLUBS, DIAMONDS, JOKER};class Poker{ char m_type; int m_point;public: Poker() : m_type(0),...原创 2019-12-04 22:52:35 · 1392 阅读 · 0 评论 -
用函数重载的方式编写程序,统计出一个以给定结构为基准的结构体数组中名字/年龄/班级/性别为X的出现了多少次
有以下结构:struct student{ char name[32]; int age; int class; bool sex; }; 写出函数,用函数重载的方式编写程序,统计出一个以上述结构为基准的结构体数组中:1、名字为X的出现了多少次2、年龄为X的出现了多少次3、班级为X的出现了多少次4、性别的X的出现了多少次#include <iostream&...原创 2019-12-02 18:08:23 · 352 阅读 · 0 评论 -
将一个字符串转换为数字,返回值用来校验转换是否成功
#include <iostream>using namespace std;bool strtoi(const char * src, int & res){ if (!src) { return false; } if (*src <= ' ') { src++; } int flag = 1; if (*src == '-')...原创 2019-11-25 17:37:32 · 220 阅读 · 0 评论 -
C++完成对结构体的排序,通过传入判断大小的函数来实现
这里我们可以定义一个扑克牌的结构体,模拟扑克牌的实现和手牌排序(也就是完成对结构体的排序)#define _CRT_SECURE_NO_WARNINGS#include <iostream>using namespace std;//首先定义一个结构体struct Poker{ char type; //花色 int point; //大小};enum{...原创 2019-11-26 22:07:21 · 224 阅读 · 0 评论 -
C++将一个数字通过指定进制按位逆置(直接覆盖原数)
#include <iostream>using namespace std;void sysReverse(int & num, int hex){ int tmp; int i = num; int sum = 0; for (; i; i = i / hex) { tmp = i % hex; sum = sum * hex + tmp; }...原创 2019-11-22 18:36:15 · 259 阅读 · 0 评论 -
C++模拟实现string类
#pragma once#define _CRT_SECURE_NO_WARNINGS#include <string.h>#include <stdlib.h>#include <iostream>using namespace std;#define DEFAULTCAPA 16#define COUNTCAPA(size) (((siz...原创 2019-11-21 18:10:00 · 177 阅读 · 0 评论 -
给一个非空的单词列表,输出前n个出现次数最多的单词
给一个非空的单词列表,输出前n个出现次数最多的单词返回的答案应该按单词出现频率由高到低排序,如果不同的单词有相同的出现频率,按字母顺序排序#include <iostream>#include <string>#include <vector>#include <map>#include <set>#include <...原创 2019-11-17 22:10:21 · 772 阅读 · 0 评论 -
有n堆石子,每次取出两堆合成一堆,每堆石子的个数即为合并石子所需要耗费的体力,求出合并所有石子堆所需要耗费的最小体力
有n堆石子,每次取出两堆合成一堆,每堆石子的个数即为合并石子所需要耗费的体力,求出合并所有石子堆所需要耗费的最小体力典型的贪心题,即每次取出数量最少的两堆石子合并.举个例子来说,假如有5堆石子,石子个数分别为1 2 3 4 5为了使得耗费的体力最小,我们需要每次合并石子数最小的和次小的两堆石子第一次1 + 2 ,耗费3点体力石子堆变为3 3 4 5第二次3 + 3 ,耗费6 点...原创 2019-11-16 22:40:18 · 1774 阅读 · 0 评论 -
C++统计字符串中每个字符出现的次数
#include <iostream>#include <string>#include <set>#include <map>using namespace std;//统计字符串中每个字符出现的次数int main(){ string s; cin >> s; map<char, int> m;...原创 2019-11-15 20:25:46 · 9353 阅读 · 1 评论 -
C++将一个有序数组按顺序移动,在移动后的数组中查找一个数字
在有序数组中查找一个数字,可以使用二分查找该题给定的是有序数组移动后的数组,所以不能直接利用二分查找给定的数组为4, 5, 6, 7, 8, 9, 1, 2, 3思路是先找到断点,也就是该数组中数字1所在的位置由于数组是一个升序排列的有序数组,所以我们同样可以利用二分的思路去查找断点 if (src[mid] > src[mid + 1]) { return mid ...原创 2019-11-12 17:50:50 · 487 阅读 · 0 评论 -
输入一个字符串,求出该字符串包含的字符集合,例如:输入 abcqwerabc ,输出,acbwqer
方法一:设置一个bool数组,用来记录字符的置为,初始化为false、bool vis[74] = { false }; 设置一个num字符数组记录需要输出的字符char num[55]; 设置一个字符数组, 并输入char ch[101];cin >> ch;遍历字符串,利用ASCII码值给相应的字符置位for (int i = 0; ch[i]; i++...原创 2019-11-11 20:57:35 · 2170 阅读 · 0 评论 -
C++逆波兰表达式求值
#include <iostream>#include <vector>#include <string>#include <stack>using namespace std;//逆波兰表达式求值int evalRPN(vector<string>& tokens) { stack<int> t...原创 2019-10-25 22:35:15 · 907 阅读 · 2 评论 -
C++对于栈的压入弹出序列的判断
#include <iostream>#include <vector>#include <stack>using namespace std;//栈的压入弹出序列bool IsPopOrder(vector<int> pushV, vector<int> popV) { stack<int> stmp;...原创 2019-10-23 15:53:33 · 337 阅读 · 0 评论 -
C++实现二叉树的层序遍历, 并按层次打印
#include <iostream>#include <vector>#include <queue>using namespace std;struct TreeNode{ int val; TreeNode * left; TreeNode * right; TreeNode(int x) : val(x), left(NULL...原创 2019-10-16 18:22:02 · 2053 阅读 · 0 评论 -
unsigned int reverse_bit(unsigned int num) ,这个函数的返回值为num的二进制位模式从左到右翻转后的值
#include <stdio.h>#include <stdlib.h>unsigned int reverse_bit(unsigned int num){ int ret = 0; //用来记录结果 int i = 0; while (i < 32){ //循环32次判断num的每一位二进制是否为1 if (num & (1 <&l...原创 2019-04-16 14:47:22 · 306 阅读 · 0 评论 -
编写函数:(不使用位操作符) unsigned int reverse_bit(unsigned int value); 这个函数的返回值value的二进制位模式从左到右翻转后的值。
#include <stdio.h>#include <stdlib.h>unsigned int reverse_bit(unsigned int n){ unsigned int sum = 0; for (int i = 0; i < 32; ++i, n /= 2){ 保证遍历32次,使得二进制高位0保留下来 unsigned int tmp = ...原创 2019-04-20 17:28:59 · 97 阅读 · 0 评论 -
.编程实现:(拓展)一组数据中有两个数字出现了一次.其他所有数字都是成对出现的. 请找出这两个数字.(使用位运算)
#include <stdio.h>#include <stdlib.h>int main(){ int arr[10] = { 1, 2, 3, 4, 5, 6, 4, 3, 2, 1 }; int ret = 0; for (int i = 0; i < 10; ++i){ ret = ret ^ arr[i]; //这样遍历并按位与之后其实得到的是...原创 2019-04-20 18:45:10 · 281 阅读 · 0 评论 -
利用位操作符,不创建临时变量,交换两个数
#include <stdio.h>#include <stdlib.h>int main(){ int a = 10; int b = 20; a = a ^ b; b = a ^ b; a = a ^ b; printf("%d %d",a,b); system("pause"); return 0;}原创 2019-04-13 17:37:25 · 109 阅读 · 0 评论 -
求一个整数储存在内存中的二进制中1的个数
#include <stdio.h>#include <stdlib.h>int main(){ int num = 10; int count = 0; while (num != 0){ if (num % 2 == 1){ //判断num在二进制下的每一位是不是1 ++count; } num = num >> 1; } p...原创 2019-04-13 17:39:50 · 81 阅读 · 0 评论 -
有一个字符数组的内容为:"student a am i",将数组的内容改为"i am a student".
#include <stdio.h>#include <stdlib.h>//求字符串长度int Mine_Strlen(char* str){ int count = 0; while (*str != '\0'){ ++count; ++str; } return count;}//将字符串内容翻转void reverse_S(char* s...原创 2019-04-21 18:38:00 · 142 阅读 · 0 评论 -
调整数组使奇数全部都位于偶数前面。
#include <stdio.h>#include <stdlib.h>int main(){ int arr[9] = { 1, 2, 3, 4, 5, 6, 7, 8, 9 }; int i = 0; int j = 8; //从左边开始向右找奇数 while (arr[i++] % 2 && i <= 8); //从右边开始向...原创 2019-04-21 21:04:35 · 143 阅读 · 0 评论 -
求一个整数储存在内存中的二进制中1的个数(可求负数)
#include <stdio.h>#include <stdlib.h>int main(){ int num = -10; int count = 0; for (int i = 0; i < 32; ++i){ if (num & (1 << i)){ //依次比较二进制位置看是否为1 ++count; } } p...原创 2019-04-14 14:30:50 · 252 阅读 · 0 评论 -
求一个整数储存在内存中的二进制中1的个数(优化方法)
#include <stdio.h>#include <stdlib.h>int main(){ int num = -10; int count = 0; while (num){ ++count; num = num & (num - 1); //每执行一次消除一个二进制位中的1 } printf("%d\n",count); syste...原创 2019-04-14 14:39:27 · 278 阅读 · 0 评论 -
不使用(a+b)/2这种方式,求两个数的平均值
通常我们求平均值习惯于利用(a+b)/2这种方式,但在我们的编程当中,如果数据过大,a+b在计算过程中可能会出现数据溢出的情况,从而导致结果出错,相反如果我们换一种思路,就可以避免这种情况,比如,我们可以利用大的数减去小的数,从大数比小数多的这部分中取出一半给小数,这样也是求平均数的一种放法,相应代码如下:#include <stdio.h>#include <stdlib....原创 2019-04-17 15:46:28 · 143 阅读 · 0 评论 -
在杨氏矩阵(一个二维数组,从左向右递增,从上往下递增)中查找一个数是否存在
首先我们要搞清楚杨氏矩阵是什么。简单来说杨氏矩阵就是一个二维数组,在这个二维数组中,每一行从左向右是递增的,每一列从上往下是递增的。简单认识杨氏矩阵之后,接下来我们该怎样去思考这个问题?或者说我们该如何下手呢?假设我们有一个这样的二维数组:1 3 53 5 75 7 9如果说我们要在这样的一个数组中去寻找7,那我们该怎样去找?不妨现试试从中心出发,将中心这个数也就是5与我们要寻找的7...原创 2019-04-22 15:53:30 · 702 阅读 · 0 评论 -
C语言初阶简单扫雷制作
#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>#include <time.h>int Menu(){ printf("==============\n"); printf("1. 开始游戏\n"); printf("2. 退出游戏\n"); printf(...原创 2019-04-26 21:32:51 · 228 阅读 · 0 评论 -
关于递归和非递归求斐波那契数
斐波那契数,亦称之为斐波那契数列,指的是这样一个数列:1,1,2,3,5,8,13,21…在数学上,斐波那契数列以如下被以递归的方法定义,就是斐波那契数列由1和1开始,之后的斐波那契数列系数就由之前的两数相加得到.#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>int Fib(i...原创 2019-05-01 23:45:05 · 586 阅读 · 0 评论 -
详解递归实现函数reverse_string(char* string)将字符串反向排序
实现:将参数字符串中的字符反向排列.之前我们已经多次写过不利用库函数去求字符串长度,所以我们在这里再用一次,先把需要反向排序的字符串长度求出来,方便后面的使用int Strlen(char* str){ //定义函数求字符串长度 int i; //当str[i] = '\0'时跳出循环,此时i就是字符串的长度 for (i = 0; str[i]; ++i); return i;} ...原创 2019-05-02 11:41:57 · 1067 阅读 · 0 评论 -
编写程序计算1到 100 (1000)的所有整数中出现多少次数字9
#include <stdio.h>#include <stdlib.h>int main(){ int i; int count = 0; //记录1-100出现多少次9 int Count = 0; //记录1-1000出现多少次9 //1-100所有整数中出现9的次数 for (i = 1; i <= 100; ++i){ if (i % 10...原创 2019-04-27 21:20:34 · 1524 阅读 · 0 评论 -
编程实现:一组数据中只有一个数字出现了一次.其他所有数字都是成对出现的.请找出这个数字(使用位运算)
#include <stdio.h>#include <stdlib.h>int main_3(){ int arr[7] = { 1, 2, 3, 4, 2, 3, 1 }; int ret = 0; for (int i = 0; i < 7; ++i){ //遍历 //初始ret = 0,也就是说每次与一个新数按位异或二进制位上就多一个1 //...原创 2019-04-18 15:49:52 · 203 阅读 · 0 评论 -
有一个字符数组的内容为:"student a am i", 请你将数组的内容改为"i am a student".
#include <stdio.h>#include <stdlib.h>int Mine_Strlen(char* str){ //计算字符串长度 int count = 0; while (*str != '\0'){ ++count; ++str; } return count;}//实现字符串的倒转,即将"student a am i"变为"...原创 2019-04-18 17:11:40 · 331 阅读 · 0 评论 -
判断0~99999之间的所有“水仙花数”并输出
在数论中,水仙花数(Narcissistic number)也称为自恋数、自幂数、阿姆斯壮数或阿姆斯特朗数(Armstrong number),是指一n位数,其各位数字的n次方和等于该数。比如:153 = 1^3 + 5^3 +3^3407 = 4^3 + 0^3 + 7^3先看一个简单的程序,假如现在我们只想知道100-999之间的水仙花数,这个问题其实就很好解决了,我们遍历100 - ...原创 2019-04-28 18:39:11 · 443 阅读 · 0 评论 -
两种方法实现函数unsigned int reverse_bit(unsigned int value);这个函数的返回值value的二进制位模式从左到右翻转后的值
举个例子来说明这个函数想要实现的功能比如:在32位机器上25这个值(二进制)包含下列各位:00000000000000000000000000011001翻转后:(2550136832)10011000000000000000000000000000程序结果返回:2550136832程序如下:#include <stdio.h>#include <stdlib...原创 2019-05-03 22:29:45 · 151 阅读 · 0 评论 -
基础算法,高精度加法详解
在之前的程序中,用到加法,我们可以定义这样一个函数int add(int x, int y){ return x + y;}这是最简单的一种加法的定义,也算是我们最为常用的.假如现在需求变更,需要求百位数字之间的加法运算结果,那么该如何去做呢?在我们之前所学习过的类型中,unsigned long long类型是目前C语言中精度最高的数据类型,而它所能表示的最大数据也才到2 ^ 64...原创 2019-05-05 12:18:59 · 592 阅读 · 0 评论 -
编写代码模拟三次密码输入的场景.多能输入三次密码
如果密码正确,提示“登录成功”,如果密码错误,可以重新输入,最多输入三次.三次均错,则提示退出程序.首先我们要知道密码应该以字符串的形式输入.其次,我们为了判断密码是否正确就需要在用户输入的密码和正确密码之间进行比较,而在我们的C语言当中,比较字符串时,不能直接用==来进行比较,需要用到strcmp这个函数.代码如下#define _CRT_SECURE_NO_WARNINGS#includ...原创 2019-04-29 20:05:58 · 590 阅读 · 0 评论 -
编写一个程序,可以一直接收键盘字符,如果是小写字符就输出对应的大写字符,如果接收的是大写字符,就输出对应的小写字符,如果是数字不输出。
#include <stdio.h>#include <stdlib.h>//用宏来定义大写字母的查找#define IsBigNumber(ch) (ch <= 'Z' && ch >= 'A') //定义一个函数判断小写字母int IsSmallNumber(char ch){ return ch <= 'z' &&...原创 2019-04-29 20:11:56 · 497 阅读 · 0 评论 -
C语言求两个数的最大公约数(两种方法)
#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>int main() { //求两个数的最大公约数 //第一种方法 /*int a, b; int min; int max = 0; //max用来记录最大公约数 printf("请输入两个数: \n"); scanf...原创 2019-04-25 12:40:58 · 1193 阅读 · 0 评论 -
创建一个数组,实现函数init()初始化数组,empty()清空数组,实现reverse()函数完成数组元素的逆置
#include <stdio.h>#include <stdlib.h>//将数组a[]初始化为给定数组data[]void Init(int data[], int a[], int size){ for (int i = 0; i < size; ++i){ a[i] = data[i]; }}void empty(int a[], int ...原创 2019-04-30 21:58:52 · 654 阅读 · 0 评论 -
一个关于喝汽水的趣味编程
假设我们手上有20元,现在我们想喝汽水,老板说一瓶汽水一元,并且两个空瓶子可以再换一瓶汽水.那么我们最多可以喝多少瓶汽水呢?首先我们将思路理清手上有20元,也就说我们一开始可以喝20瓶汽水将20瓶汽水喝光,我们手上会有20个空瓶子,可以再换10瓶汽水全部喝光有10个空瓶子,再换5瓶汽水喝完有5个瓶子,可以换2瓶汽水此时我们的手头有2瓶汽水,1个空瓶子喝完汽水,我们又可以换一瓶这个...原创 2019-05-13 18:08:40 · 167 阅读 · 0 评论