
C++
yogima
邮箱:yogima@qq.com
展开
-
C++周反馈1(11.14-11.20)
周反馈1(11.14-11.20)C++部分验证哥德巴赫猜想任意≥6的偶数都可以分成两个质数#include <iostream>#include <cmath>using namespace std;int isPrime(long long int a){ int tmp=sqrt(a); for(long long int n=2;n<=tmp;n++) {原创 2016-11-17 11:38:59 · 345 阅读 · 0 评论 -
获取二叉树的高度(递归)
int depth(tnode<char>* t) { int leftd; int rightd; int d; if (t == NULL) d = -1; else { leftd = depth(t->left); rightd = dep原创 2018-01-08 01:07:47 · 1179 阅读 · 0 评论 -
汉诺塔问题(c++实现)
问题描述:有三根杆(编号A、B、C),在A杆自下而上、由大到小按顺序放置n个金盘。目标:把A杆上的金盘全部移到C杆上,并仍保持原有顺序叠好。操作规则:每次只能移动一个盘子,并且在移动过程中三根杆上都始终保持大盘在下,小盘在上,操作过程中盘子可以置于A、B、C任一杆上。分析:要经过以下几步: (1)以C盘为中介,从A杆将1至n-1号盘移至B杆; (2)将A杆中剩下的第n号盘移至C杆; (3)以A原创 2018-03-22 20:11:12 · 9250 阅读 · 0 评论 -
利用递归解决全排列问题
基本思想:以四个数为例,先把第一个位置的数固定,递归地求后三个数的全排列,在求后三位的全排列时,把这三位中的第一位(整个数列中的第二位)固定,以此类推。当只剩最后一个数要被固定时就可以输出了。比如0123,先是输出0123(全固定),然后2取消固定,和3进行交换,交换后一组全排列输出完毕要交换回来。0123和0132输出之后,1取消固定,1和2进行交换,固定2,接下去一系列和之前一样。再是1.3交换原创 2018-03-22 23:41:36 · 900 阅读 · 0 评论 -
C++报错之必须定义入口点(VS) 模板
1.检查自己main函数是否编写,main是否编写正确。2.调用模板函数时直接调用即可。我编写了模板函数quickSort,在main函数中调用时,在写main之前加上了typename<class T>,然后试图把数组类型写成T(因为在模板函数中数组类型为T):typename<class T>int main(){ cout << "请输入一组数字(用空格隔开)进行快排" << en原创 2018-03-29 19:37:05 · 13515 阅读 · 0 评论 -
关于while(cin>>)
代码如下:int main(){ cout << "请输入数字以构成二分查找的数组" << endl; int a[1000]; int x, n = 0; while (cin >> x) { a[n] = x; n++; } cout << "请输入你想查找的数字" << endl; int i,原创 2018-03-29 19:43:20 · 2367 阅读 · 0 评论 -
动态规划问题一:最长公共子序列(矩阵-二重指针对应指针数组)
什么是子序列? -对序列 1,3,5,4,2,6,8,7来说,序列3,4,8,7 是它的一个子序列,也即子序列不是子串,不一定要连续。 但是也不是子集,也即需要按原序列的顺序,不可打乱元素顺序。什么是动态规划? -动态规划算法与分治法类似,其基本思想也是将待求解问题分解成若干个子问题,先求解子问题,然后从这些子问题的解得到原问题的解。与分治法不同的是,适合于用动态规划求解的问题,经分解得...原创 2018-04-22 22:29:53 · 664 阅读 · 0 评论 -
动态规划问题二:最大子段和问题
问题描述: 若给定n个整数组成的序列a1,a2,a3,……an,求该序列形如ai+a(i+1)+……+aj的最大值。思路:辅助数组b[j]用来记录一j为尾的子段和集合中的最大字段和,a[i]为序列的第i个元素。 那么当b[i-1]>0时,b[i]=b[i-1]+a[i],否则 b[i]=a[i];代码:#include <iostream>using namespace std;int MIS(原创 2018-04-23 00:14:53 · 3703 阅读 · 0 评论 -
三分钟搞懂kruskal算法、prim算法和dijkstra算法的区别(附kruskal算法的代码)
kruskal的代码:原创 2018-05-22 18:02:08 · 4980 阅读 · 4 评论 -
元胞自动机之生命游戏——c++实现
生命游戏规则: 1. 如果一个细胞周围有3个细胞为生(一个细胞周围共有8个细胞),则该细胞为生(即该细胞若原先为死,则转为生,若原先为生,则保持不变) 2. 如果一个细胞周围有2个细胞为生,则该细胞的生死状态保持不变 3. 在其它情况下,该细胞为死(即该细胞若原先为生,则转为死,若原先为死,则保持不变设定图像中每个像素的初始状态后依据上述的游戏规则演绎生命的变化,由于初始状态和迭代次数不同,...原创 2018-06-19 16:45:01 · 3751 阅读 · 1 评论 -
后缀表达式建立表达式树。前序遍历、中序遍历和后序遍历(递归)
二叉树类:#ifndef TNODE_H#define TNODE_Htemplateclass tnode {public: tnode* left, right; //一个节点由三部分构成,指向左子树的指针,指向右子树的指针和它自己的值 int tnodeValue; tnode():left (NULL),right(NULL) {} tn原创 2018-01-08 00:25:58 · 2375 阅读 · 0 评论 -
C++——单链表的原地逆转以及建模板链时遇到的报错信息
main.cpp:#include <iostream>#include "node.h"using namespace std;void inverted(node* &head,int latter_num,node* &temp);int main(){ //head为空 表头节点 指向第一个节点。注意一定要用new。node* head;←这样是不对的 node* hea原创 2017-12-11 16:19:36 · 828 阅读 · 0 评论 -
可变数组
//要有可变数组 首先要数组可增长 然后要能获得某时的数组长度 最后要可以访问数组单元 #include <iostream>#include <cstdlib>//#include <cstring> const int blockSize=20;using namespace std;typedef struct{ int *array; int size;}Array原创 2017-02-10 22:39:57 · 523 阅读 · 0 评论 -
C++理论课相关1
目录前置增量if括号中的条件或逗号表达式其他前置增量#include <iostream>using namespace std;int main(){ int m=5; if(m++>5)//m++ = 5,因此执行else cout<<m; else cout<<m--<<endl;//在执行cout之前 m=6,--在c原创 2016-11-19 18:15:35 · 426 阅读 · 0 评论 -
用递归函数实现十进制转八进制
用递归函数实现十进制转八进制#include <iostream>using namespace std;int func(int n);int main(){ int n; cout<<"请输入十进制正整数"<<endl; cin>>n; cout<<func(n)<<endl; return 0;}int func(int num){原创 2016-12-07 09:00:23 · 9896 阅读 · 1 评论 -
超时的处理——hdu acmstep1.2.7 RightmostDigit
由于数字较大,联想到末位数字只与每次运算结果的最后一位有关,因此先进行%10处理。#include <cstdio>using namespace std;int main(){ int T; scanf("%d",&T); for(int i=1;i<=T;i++) { long long int N,sum=1; scanf(原创 2016-12-26 18:46:59 · 453 阅读 · 0 评论 -
C、C++输出精度控制—hdu acmstep 1.2.4 financial management&&1.2.8 balloon comes
题目如下思路很简单,用循环算出12个月份之和再/12即可。关键就是输出精度的控制。代码如下:#include <iostream>#include <iomanip>using namespace std;int main(){ float sum,number,i; for(i=1;i<=12;i++) { cin>>number;原创 2016-12-21 13:26:16 · 501 阅读 · 0 评论 -
二维数组基础
1.输出一个5X5对角矩阵,左右对角线为1,其他为0#include using namespace std;int a[5][5];int main(){ int i,j; for(i=0;i5;i++) { for(j=0;j5;j++) { a[i][j]=0; if(i=原创 2016-12-27 16:30:42 · 461 阅读 · 0 评论 -
C++中的随机函数
C++中随机函数的用法,我们来看一个例子,即最简单的随机函数:#include <iostream>#include <cstdlib>#include <ctime>using namespace std;int main(){ int t; srand(time(0));//根据系统时间设置随机数种子 t=rand()%10+1;//控制随机数范围,例如此随机数原创 2016-12-28 15:54:38 · 4843 阅读 · 0 评论 -
HDU acmstep 1.2.3 text reverse
HDU acmstep 1.2.3 text reverse——记整行的读取(包括空格) 及不要忘记读第一个回车基本思路: 读取整行,遇到空格后将字母由由后向前的顺序存储于数组中并输出,直到前一个空格结束。其中读取带空格的整行由gets()实现。代码:#include <cstdio>using namespace std;char s[10010];//其实c中的字符数组就相当原创 2016-12-20 18:00:22 · 339 阅读 · 0 评论 -
指针的使用和运算
指针基础指针 即指向某数据的地址 指针是不可以int *p;然后*p=12;这样赋值的,正确的应该是p=12;或是p=&i之类(p不是int类 而是int*类,当然不能直接给它赋int的值,它是地址啊) 例:#include using namespace std;int main(){ double i=100,j=200,k=300,d=10.9; doubl原创 2017-01-19 15:38:07 · 490 阅读 · 0 评论 -
动态内存申请
申请内存失败则返回0或者说NULL#include <iostream>#include <cstdlib>//包含malloc函数 using namespace std;int main(void){ int number; int *a; int i; cout<<"输入数量:"<<endl; cin>>number; //int a[原创 2017-01-19 16:34:44 · 297 阅读 · 0 评论 -
元胞自动机之兰顿蚂蚁——c++实现
描述: 在平面上的正方形格被填上黑色或白色。在其中一格正方形有一只“蚂蚁”。它的头部朝向上下左右其中一方。 若蚂蚁在黑格,右转90度,将该格改为白格,向前移一步; 若蚂蚁在白格,左转90度,将该格改为黑格,向前移一步。实现: 显示方面依旧使用了easyX 由于不可能让蚂蚁无限走下去,人为地规定了步数20000步,当然也可以自己修改。并且人为规定它要在200*200的矩形中走并处理边界...原创 2018-06-19 23:23:43 · 1892 阅读 · 0 评论