
c/c++
文章平均质量分 53
MyLinChi
这个作者很懒,什么都没留下…
展开
-
C++/C中基于数组的链表(静态链表)
1.用数组描述的链表,即称为静态链表。在C语言中,静态链表的表现形式即为结构体数组,结构体变量包括数据域data和游标CUR。游标指示器指示其后继结点在结构数组中的相对位置(即数组下标)。定义如下:const int maxn=10000;struct StaticNode{ ElemType data; int cur;};StaticNode StaticList[max原创 2016-12-02 22:43:35 · 2991 阅读 · 0 评论 -
线程编译问题(undefined reference to `pthread_create')
[cpp] view plain copy#include #include #include void printids(const char *s) { pid_t pid; pthread_t tid; pid = getpid();转载 2016-11-25 10:25:37 · 752 阅读 · 0 评论 -
210 - Concurrency Simulator
#include#include#include#include#include#include#include#includeusing namespace std;vector prog[11];map var;deque ready;queue blocked;int runId,n,Q;int itime[6];int ip[11];int locknum原创 2016-11-27 13:07:05 · 415 阅读 · 0 评论 -
514 - Rails
#include#include#includeusing namespace std;deque Br;vector Cr;int A,N;void compu(int N){ Cr.clear(); A=1; while(!Br.empty()) { int t=Br.front(); Br.pop_front(); if(Cr.empty()原创 2016-11-27 15:23:07 · 432 阅读 · 1 评论 -
442 - Matrix Chain Multiplication
#include#include#includeusing namespace std;struct Matrix{ int a,b; Matrix(int a=0,int b=0):a(a),b(b){}} mats[26];int main(){ int N; cin>>N; for(int i=0;i<N;i++) { char num;原创 2016-11-27 18:57:11 · 479 阅读 · 0 评论 -
c++中<string.h>、<string>和<string.h>的区别
string.hstring.h是C语言里面关于字符数组的函数定义的头文件,常用函数有strlen、strcmp、strcpy等等,更详细的信息可以自己查看(面向过程)cstringCString常用于MFC编程中,是属于MFC的类,如从对话框中利用GetWindowText得到的字符串就是CString类型,CString定义在afx.h头文件中。CString为Visu转载 2016-12-09 23:27:24 · 2735 阅读 · 0 评论 -
八数码问题
问题描述:如下如所示,a,b分别表示两种状态,每个九宫格中的数字都是0~8共9个数字的任意一种排列,现在要把算出a状态移动到b状态的最佳步骤(移动步数最少)。移动的规则是0方块与上下左右任意一块互换位置。问题分析:把每种状态看成一个结点,0块与上下左右块互换位置后形成的状态为之前状态的相邻结点。由此可以见,不过是一个用BFS搜索最短路径的问题。那么问题来了,由于9和数字的全排列原创 2016-12-17 21:52:24 · 2272 阅读 · 2 评论 -
最大连续和
问题描述:给出一个长度为n的序列,求出最大连续和。就是找出1尽量大。方法一:直接枚举i,j,找出连续和最大的i,j。#include#includeusing namespace std;int A[1000],n;int main(){ cin >> n; for (int i = 1; i > A[i]; int sum = A[1]; for (int i =原创 2016-12-17 22:00:02 · 900 阅读 · 1 评论 -
归并排序
归并排序是一种高效算法,按照分治的三步法,归并排序的三个步骤如下:划分问题:把序列划分为尽量相等的两半。递归求解:把两半元素分别排序。合并问题:把两个有序表合并为一个。总结为一句话就是,先排列最小的两个相邻的数然后合并两个相邻的序列。程序流程图如下:程序实现如下:#includeusing namespace std;void merg_sort(in原创 2016-12-17 22:06:27 · 664 阅读 · 1 评论 -
求直线上的整数点算法
问题描述:求直线上有多少个整数点(x,y)满足。问题分析:把直线方程进行移项,得到。假设已经得到直线上一个点的坐标,假设直线存在另外一个点坐标为,那么把两点代入直线得到方程,整理得到。假设,上上式两边同除g,可以得到,其中。把等式再变形得到,此时的和互素,必定是的整数倍,即k可以为任意整数。整理得到,。由上面的分析知道,只需要就出方程的任意一组解,就可以求出其他解。原创 2016-12-17 22:24:59 · 4657 阅读 · 2 评论 -
apue.h头文件(unix环境高级编程)
apue.h是作者自己写的一个文件,包含了常用的头文件,系统不自带。其中包含了常用的头文件,以及出错处理函数的定义。使用起来确实很方便。 apue.h内容如下: [cpp] view plain copy print?#ifndef _APUE_H #define _APUE_H #define _X转载 2016-11-25 09:49:18 · 708 阅读 · 0 评论 -
刘汝佳《算法竞赛入门经典》推荐题目
题号全部为uva题号另附两个参考网站:1.uva崩的时候用下面这个可以代替http://acm.hust.edu.cn/vjudge/problem/toListProblem.action2.没有输入的正确答案可以用下面这个生成http://uvatoolkit.com/problemssolve.PHP一、基础题目1.转载 2016-12-04 22:05:00 · 1776 阅读 · 0 评论 -
814-The Letter Carrier's Rounds
#include#include#include#include#includeusing namespace std;void split_address(const string& src,string& user,string& mta){ int k=src.find('@'); user=src.substr(0,k); mta=src.substr(k+1)原创 2016-11-21 19:30:06 · 444 阅读 · 0 评论 -
VC中为了调试方便如何把输入输出重定向到文件中?
只需在main函数的前面添加下面两句即可。 freopen("in.txt","r",stdin); freopen("out.txt","w",stdout); 然后在in.txt文件中放入输入的内容运行程序后会在out.txt中输出答案注意:以上两个文件都处在和源文件一样的目录下。原创 2016-11-21 20:09:09 · 1655 阅读 · 0 评论 -
C++中的freopen()函数实现比较两个文件的内容是否相同
程序很简单,主要使用了一个freopen()函数。具体的用法是:函数名:freopen 声明:FILE *freopen( const char *path, const char *mode, FILE *stream ); 所在文件: stdio.h 参数说明: path: 文件名,用于存储输入输出的自定义文件名。 mode: 文件打原创 2016-11-21 21:06:24 · 7874 阅读 · 0 评论 -
C++中整型随机数发生器的写法
#include#includeusing namespace std;int main(){ for(int i=0;i<100;i++) cout<<int((double)rand()/RAND_MAX*100)<<endl; return 0;}rand()函数在头文件cstdlib中,RAND_MAX是可以rand()返回值的上限。为了得到一个[0,1]之原创 2016-12-03 23:31:29 · 610 阅读 · 1 评论 -
全排列算法
所谓全排列算法,就是输入n个数据,然后输出该n个数据的所有的排列情况。1.每个元素不相同情况下的排列。排列的用计算机程序的思路来考虑就是递归地往数组A里添加元素的过程,如果放完了元素就输出并回溯。为了形象说明情况,我们举个例子,并给出算法的流程图和程序实现。demo:输入n,输出1~n的全排列。流程图:程序实现:#includeusing namespace st原创 2016-12-11 22:13:00 · 1406 阅读 · 1 评论 -
八皇后问题
1. 问题:在棋盘上放置8个皇后,使得它们互不攻击,每个皇后的攻击范围为同行同列和同对角线,要求找出所有解。思路:不难发现恰好每行每列放置一个皇后,如果用C[x]表示第x行皇后的列编号,则问题变成了全排列生成的问题。流程图如下:代码实现:#include#includeusing namespace std;int n,cnt;int C[100];void原创 2016-12-12 23:14:00 · 730 阅读 · 1 评论 -
素数环问题
问题:输入正整数n,把整数1,2,3,…,n组成一个环,使得相邻两个整数之和均为素数。输出时从整数1开始逆时针排列。n样例输入:6样例输出:1 4 3 2 5 61 6 5 2 3 4方法一:直接枚举法#include#include#includeusing namespace std;int isp[200],A[200];int is_prime(int原创 2016-12-12 23:16:23 · 2112 阅读 · 1 评论 -
子集生成算法
1. 增量构造法基本思路:一次选出一个元素放到集合中。算法流程:使用前序遍历的方法,因为A中元素个数不确定,每次递归调用都要输出当前集合。另外,为了避免出现类似于{1,2}按照{1,2}和{2,1}输出两次,可以使用定序的技巧,即规定集合A中所有元素的编号从小到大排列,对应于程序中的int s=cur?A[cur-1]+1:0;和for(int i=s;i#incl原创 2016-12-12 23:28:21 · 1055 阅读 · 1 评论 -
122 - Trees on the level
#include#include#include#includeusing namespace std;const int maxn=10000+5;struct Node{ bool have_value; int v; Node *left,*right; Node():have_value(false),left(NULL),right(NULL){}};b原创 2016-12-04 21:37:26 · 483 阅读 · 0 评论 -
大整数取模
问题描述:输入正整数n和m,输出n mod m的值。问题分析:根据n和m的取值范围,可以取n为char*类型,m为int类型。首先mod运算具有如下性质:需要注意的是,有可能小于0,所以要先加n。而当n=时,中间结果会溢出,所以计算时应该先强制类型转换为long long 型。对于输入的n,把大整数写成“自左向右”的形式:1234=((1*10+2)*10)*10+4,然后原创 2016-12-17 22:31:55 · 4490 阅读 · 2 评论 -
幂取模算法
问题描述:输入正整数a、n和m,输出的值。方法一:依此乘以a并取模#include#includeusing namespace std;int pow_mod(int a, int n, int m){ int ans = 1; for (int i = 0; i < n; i++)ans = (int)((long long)ans * a % m); return a原创 2016-12-17 22:35:55 · 693 阅读 · 1 评论 -
Dev-C++调试技巧
如果可以随意选的编译器,那固然是好事。但是,有些比赛或者考试就往往规定了要编译C++只能用Dev-C++,该编译器简单易上手,但也造成了它功能上的局限性。因此,必须掌握一些使用Dev-C++开发调试的技巧。1.批量输入对于输入量比较大的情况,如果每次都一个字母一个字母地敲,必然会耗费大量的时间。一个简答的做法就是批量输入。下面为demo:建立项目时,为调试的方便,最好不好使用中文名。原创 2016-12-19 23:11:28 · 8576 阅读 · 0 评论 -
c语言常用关键字总结
1.auto告诉编译器,该变量由你自动分配空间,意味着编译器按照自己的规则,自动在内存空间内分配内存盛放此变量。2.const告诉编译器,该变量的值不能被改变(如果修改了在编译阶段不能通过,增强程序的健壮性)。 ①修饰局部变量,以下两种方法等价。const int n=5;int const n=5;123 ②常量指针与指针常量原创 2017-10-26 13:53:26 · 1201 阅读 · 0 评论 -
新特性——auto的使用
C++11中引入的auto主要有两种用途:自动类型推断和返回值占位。auto在C++98中的标识临时变量的语义,由于使用极少且多余,在C++11中已被删除。前后两个标准的auto,完全是两个概念。1. 自动类型推断 auto自动类型推断,用于从初始化表达式中推断出变量的数据类型。通过auto的自动类型推断,可以大大简化我们的编程工作。下面是一些使用auto的例子。转载 2017-11-30 18:42:06 · 478 阅读 · 0 评论 -
strcpy、strncpy与memcpy的区别与使用方法
一、c标准库中关于这三个函数的说明1.strcpy2.memcpy3.strncpy二、总结strcpy这个函数比较简单,用于字符串的复制,它只要求s2有足够空间可以存下s1,否者复制到s2存不下为止。memcpy和strncpy都是可以指定要复制的字符个数,只是strncpy遇到'\0'时就会停止字符原创 2017-12-09 13:28:03 · 833 阅读 · 0 评论 -
C语言中定义结构体的几种方法
结构体类型变量的定义与其它类型的变量的定义是一样的,但由于结构体类型需要针对问题事先自行定义,所以结构体类型变量的定义形式就增加了灵活性,共计有三种形式,分别介绍如下:1) 先定义结构体类型,再定义结构体类型变量:struct stu / *定义学生结构体类型* /{ char name[20]; / * 学生姓名* / char sex; / * 性别* /转载 2017-12-16 10:12:15 · 1681 阅读 · 0 评论 -
c语言位域详解
有些信息在存储时,并不需要占用一个完整的字节, 而只需占几个或一个二进制位。例如在存放一个开关量时,只有0和1 两种状态,用一位二进位即可。为了节省存储空间,并使处理简便,C语言又提供了一种数据结构,称为“位域”或“位段”。所谓“位域”是把一个字节中的二进位划分为几个不同的区域,并说明每个区域的位数。每个域有一个域名,允许在程序中按域名进行操作。 这样就可以把几个不同的对象用一个字节的二进制位域来原创 2017-12-16 10:49:03 · 5809 阅读 · 2 评论 -
详解win7下安装VC++6.0和MSDN
笔者电脑上安装的64位win7系统,如果读者不知道如何安装操作系统,可以先研读笔者之前发表的文章win7安装教程好,假设读者已经安装好操作系统了,那么Let't go!第一步,下载安装包,包括vc++6.0的安装包和MSDN的安装包vc++6.0 密码:sbi1MSDN密码:z7qz第二步,将下载的文件分别解压打开vc++6.0解压的文件夹如下所示原创 2016-09-08 16:23:54 · 19522 阅读 · 8 评论 -
C语言三种预处理功能
目录(?)[+]伪指令(或预处理指令)定义:预处理指令是以#号开头的代码行。#号必须是该行除了任何空白字符外的第一个字符。#后是指令关键字,在关键字和#号之间允许存在任意个数的空白字符。整行语句构成了一条预处理指令,该指令将在编译器进行编译之前对源代码做某些转换。下面是部分预处理指令:指令 用途# 空指令,无任何效果#include 包含一个源代码文件#d...转载 2018-02-28 11:06:16 · 2447 阅读 · 0 评论 -
unix底层库文件
一、由于linux是unix的重要分支,android 的底层是Linux,因此该解释仍然符合。二、相同点:它们都是由指令码和操作数组成的集合组成的二进制文件,一般由c/c++编译得到。.o文件(object): 目标文件,即c/c++等源码编译后最先得到的对象文件。就相当于windows里的obj文件 ,一个.c或.cpp文件对应一个.o文件。.a文件:是好多个.o合在一起的静态库文件(通常由链...原创 2018-04-24 15:29:08 · 535 阅读 · 0 评论 -
C++引用
1.引用的概念引用:就是某一变量(目标)的一个别名,对引用的操作与对变量直接操作完全一样。引用的声明方法:类型标识符 &引用名=目标变量名; 如下:定义引用ra,它是变量a的引用,即别名。 int a; int &ra=a; (1)&在此不是求地址运算符,而是起标识作用。 (2)类型标识符是指目标变量的类型。 (3)声明引用时,必须同时对其进行初始化。 ...原创 2018-05-17 10:29:17 · 503 阅读 · 0 评论 -
C++中拷贝构造函数的参数为何一定要用引用类型
我们知道,C++有一种特殊的带参数的构造函数,即拷贝构造函数。为什么特殊呢?因为该函数的形参类型便是拷贝构造函数所在的类的类型。废话少说,直接看程序:地方#includeusing namespace std;class A{public: A(){ cout << "default" << endl; } A(A& a){ cout << "copy" << endl原创 2017-11-03 14:56:23 · 1052 阅读 · 0 评论 -
C++刷题笔记(一)
1.数组的初始化int *p1=new int[10];该语句给指针p1分配内存,没有对指针初始化, int *p2=new int[10]();该语句给指针p2分配内存,并初始化指针。2.数组作为形参,实参会退化为指针#includeusing namespace std;void example(char acWelcome[]){ cout << sizeof(原创 2017-10-20 15:07:21 · 1443 阅读 · 0 评论 -
vc数字图像处理中遇到的问题
1.使用LoadImage只能载入bmp格式的图片文件,如果图片原来是.jpg格式的,即使改后缀名也是没用的。解决的办法可以是进行格式转换或者截图后保存为.bmp格式的图片。(未完待续)原创 2017-02-07 21:13:03 · 889 阅读 · 0 评论 -
vs2013下配置GDI+的步骤
GDI+是Windows XP和Windows Server 2003的一个子系统,它主要用于处理系统的绘制消息。GDI+所有的功能都被封装在一组C++类中,这些类提供了统一的图形接口,让开发者能够编写设备独立的图形程序。一下是vs2013下配置GDI+的详细步骤(以单文档项目为例,其他的类似)1.新建项目的向导设置如下。2.为项目在连接时添加gdiplus.lib"项目"原创 2017-02-12 14:57:49 · 3984 阅读 · 3 评论 -
取模运算与取余运算的区别
1.取模运算多见于计算机领域,取余运算一般拥有数学领域。2.取模运算(取余运算)计算步骤①求整数商 c=a/b②求模(余数)r=a-c*b3.两者不同点:取模运算c向负无穷远处取整,取余运算向c向0方向取整。4.结论:a为正整数时,取模运算和取余运算结果相同;a为负整数时,两者结果不同。原创 2017-08-17 22:34:39 · 5294 阅读 · 0 评论 -
<详解>C语言实现程序跳转到绝对地址0x100000处执行
嵌入式笔试题:想让程序跳转到绝对地址0x100000处执行,该如何做?网上看到有如下答案:*((void(*)(void))0x100000)();经过在VC++6.0和LINUX gcc4.4.3下测试,均不能通过编译。VC++6.0报错:error C2100: illegal indirectionGCC报错:error: void value not转载 2017-10-27 16:06:20 · 1222 阅读 · 1 评论 -
C++输出函数地址的方法
我们知道,C++的函数是指令的集合,程序的入口地址用函数名标识。跳转到程序入口地址就可以依次执行集合中的指令。那么,如果想输出函数的地址应该怎么做呢?#includeusing namespace std;void haha(){ cout<<"haha"<<endl;}int main(){ cout<<haha<<endl; return 0;}很遗原创 2017-10-27 16:24:04 · 10671 阅读 · 2 评论