void powerset(char* a, int i, char* set) { char temp[MAX_LENGTH]; /** a是输入的集合,i是在集合的第几个位置,set是最后输出的集合 */ strcpy(temp,set); if(i>=strlen(a)) { printf("{%s}\n",set); } else { powerset(a,i+1,temp);//每次需要set完整的版本 strncat(temp,(a+i),1);//每次将a数组的部分元素加到temp中 powerset(a,i+1,temp);//temp成为新的set //如果powerset的是时候一直i+1就等于把set数组一直置空 } } 作者:m0_37787222 发表于2017/9/9 继续阅读 >>


陈文浩 17/09/09 11:19:51
#include<stdio.h> void perm(char *list,int i,int n); void swap(char *a,char *b); int main() { char a[5]={'a','b','c','\0'}; perm(a,0,2); } void perm(char *list,int i,int n) { int j; if(i==n)//满足长度就输出 { for(j=0;j<=n;j++) printf("%c",list[j]); printf("\n"); } else { for(j=i;j<=n;j++) { swap(&list[i],&list[j]);//每次进行交换,然后不断递归就可以得到新结果 perm(list,i 继续阅读 >>


陈文浩 17/09/09 11:07:27
第一部分c语言操作数据库 1、连接 MYSQL *mysql mysql=mysql_init(NULL);//初始化一下 mysql_real_connect(mysql,HOST,USER,PASSWD,TESTDB,0,NULL,0) ①HOST是主机名 ②user是ID ③passwd是密码 ④TESTDB是数据库的名称 2、信息错误处理 mysql_error(mysql) 3、对数据库进行操作(具体字符串在第二部分) mysql_real_query(mysql,query,strlen(query)) query是字符串 int result=mysql_affected_rows(mysql)//获取受到影响的行 如果返回值为0,结果就是没有受到影响,数据库中没有想获取的数据 4、储存数据结果和释放空间 MYSQL_RES res=mysql_store_result(mysql) mysql_free_result(res)//必须执行才可以进行后续的操作,不然会出错 5、获取行和列 mysql_f 继续阅读 >>


陈文浩 17/09/03 22:10:58
看了线程一个礼拜,我觉得最能考验知识就是这次实验题,让我知道了学习中很多的不足 一、进程原题 /* POSIX 下进程控制的实验程序残缺版 */ #include <stdio.h> #include <sys/types.h> #include <unistd.h> #include <signal.h> #include <ctype.h> /* 允许建立的子进程个数最大值 */ #define MAX_CHILD_NUMBER 10 /* 子进程睡眠时间 */ #define SLEEP_INTERVAL 2 int proc_number=0; /* 子进程的自编号,从0开始 */ void do_something(); int main(int argc, char* argv[]) { /* 子进程个数 */ int child_proc_number = MAX_CHILD_NUMBER; int i, ch; pid_ 继续阅读 >>


陈文浩 17/08/06 14:59:15
上周看了看了进程,这周看了线程,我觉得最能区别两者不同的就是楚东方学长讲firefox是线程管理,chrome是进程管理的,线程是共用地址空间,所以会比进程切换速度更快 一、线程的创建 #include<pthread.h> int pthread_create(pthread_t *thread,pthrad_attr_t *attr,void*(*start_routine)(void *),void*arg) 参数 含义 thread 指针,当线程成功创建的时候,返回创建线程ID attr 用于指定线程的属性,NULL为默认属性 start_routine 函数指针,指向线程创建后要调用的函数 arg 该参数指向传递给线程函数的参数 线程创建成功,函数返回0,记得gcc的时候加-lpthread 函数 含义 pthread_t pthread_self(void) 获取本线程的线程ID int pthread_equal(p 继续阅读 >>


陈文浩 17/08/06 11:39:55
/* * 大学生活十分滋润,每天晚上的夜生活更是令人向往,然而在一个丰富的夜生活过后,第二天却不得不面对在课堂上睡觉这种非常惬意但是又惊心动魄的事情。 * * 在一堂高数课上,刚刚经历“夜生活”的n名大学生十分困倦,想要趁机睡觉,然而他们又害怕被老师发现,扣除平时分,所以他们想出了一个策略,就是每听a分钟的课,睡b分钟。然后再听a分钟的课,再睡b分钟,以此类推。我们将这样a+b构成的时间称之为一个周期。 * * 但是!他们都很胆小,害怕睡觉的人数太少,被抓住之后被当成典型来杀鸡儆猴,所以他们在每次准备睡觉的时候,都会再看一下现在睡觉的人数是否大于清醒的人数(哪怕睡觉的人数和听课的人数相等也不敢睡觉),只有在这个时候他才可以放心大胆的睡觉。否则他们会选择再等a分钟看看是否满足条件。 * * 现在请你写出一个程序,来求出经过多少时间之后,所有学生都在清醒状态。 * Input * 输入有多组。 * * 每组数据的第一行是一个整数n(0 <= n <= 10),代表高数课上有n名学生。若n为0,则代表输入结束,你什么都不必输出。 继续阅读 >>


陈文浩 17/08/02 23:11:45
Description 整天待在方块里的骑士感到特别的无聊,于是他决定来一场说走就走的旅行。 然而他只能走日字,如右图所示,如果骑士当前在棋盘的正中央,他可以走标记有白点的八个区域。 骑士知道世界是一个列数和行数均不超过8(即8×8)的棋盘。 并且骑士有一点强迫症,如果用A-Z来表示列,1-99来表示横行,他只愿意走字典序最小的一条道路。 你能帮助勇敢的骑士制定一个适合他的旅行计划,使得他可以走遍整个棋盘吗?骑士可以在任一方块出发或者结束。 Input 第一行中有一个正整数n,代表数据有n组。 对于每组数据,都含有两个正整数p和q(1 <= p * q <= 26),代表棋盘有p行q列。 Output 每组数据首先应当输出”Scenario #i:”,i代表输出的是第i组数据的结果。 然后在一行之内输出一条可以走遍棋盘的路径,如果有多条路径可以走遍棋盘,那么输出按字典序排序第一的路径。 最后,留一个空行。若现在是最后一条数据,则不留空行。 在输出路径时,用A代表第一列,B代表第二列..以此类推。而使用1代表第一行,2代 继续阅读 >>


陈文浩 17/07/31 22:48:19
#include<stdio.h> #include<string.h> #include<pwd.h> #include<stdlib.h> #include<sys/types.h> #include<unistd.h> #include<sys/wait.h> #include<fcntl.h> #include<dirent.h> #include<readline/readline.h> #include<readline/history.h> #include<signal.h> #define PIPE 1 #define IN 2 #define OUT 4 #define OUTAPP 16 int get_param(char *,char (*str)[256]); void explain_param(char (*str)[256],int *param,int k);//解释参数 int 继续阅读 >>


陈文浩 17/07/30 13:52:21
一、linux进程结构 代码段:存放可执行代码 数据段存放程序的全局变量、常量、静态变量 堆栈段用于存放动态分配的内存变量 二、创建进程 1.fork #include<stdio.h> #include<unistd.h> pid_t fork(void); fork有两个返回值 - fork成功调用之后实际分为两个进程,一个是父进程调用fork后返回值是刚才创建的子进程的ID - 另一个是子进程fork函数的返回值0 #include<stdio.h> #include<sys/types.h> #include<unistd.h> #include<stdlib.h> int main() { pid_t pid; char *msg; int k; printf("process creation study\n"); pid=fork(); switch(pid) { 继续阅读 >>


陈文浩 17/07/30 13:43:08
受到宫学长讲座的启发,学到不少的排序方法,所以也想记下来总结一下。所有排序默认都是从大到小排序 冒泡排序的优化 #include<stdio.h> void swap(int *a,int *b) void bubble1_sort(int *a,int len); void bubble2_sort(int *arr,int n); void bubble3_sort(int *arr,int len); int main()//立flag优化 { int a[]={10,9,8,7,6,5,4,3,2,1}; bubble3_sort(a,10); for(int i=0;i<10;i++) printf("%d ",a[i]); putchar('\n'); } void bubble1_sort(int *a,int len) { int flag=1; for(int i=0;i<len&&flag;i++) { f 继续阅读 >>


陈文浩 17/07/26 23:24:36