pluto source code analysis         01.Source Code Overview(03)         02.Function Invoke(04)         03.Main Structure(05)         04.System Initation(06)         05.Kernel Interface(07)         06....         07.Event Process(08)         08.Negotiation Overview(09)         09.Connection Process(09)         10.Host Pair(10)         11.State Operation(11)         12.Packets Process(12)         13....         14....         15.Main Mode negotiation(13)   继续阅读 >>


辛龙 14/11/01 12:36:57
UDP协议 UDP为应用程序发送和接收数据报。一个数据报是指从发送方传输到接收方的一个信息单元,UDP是不可靠 […] 继续阅读 >>


高源 14/10/28 00:14:28
若果有一组硬币,(假定有十个),每个硬币只有两个面,正面用以表示,反面用零表示. 给定目标(初始状态)1111100000 正正正正正反反反反反                   (目标状态)   1000011101 正反反反反正正正反正 规定每次只可以翻转相邻的两个硬币(他们各自成为原来的对立面) 问题,至少用多少次就可以达到目的. 将每一种状态标记为,每一次的硬币翻动(1-9)状态i,都会使,当前状态变为另一种状态状态i+1,如果在状态 i+1的位置,翻动和相应的位置,则会,回到状态i,因此判断是(状态与状态之间的转换)可以互相进行.以此判断图的搜索. 此处采索, 方法一 分析. 每个硬币翻转后都会(且必须)影响一硬币,硬币个数大于一 考虑每次翻转都会有两个硬币翻转到相反状态,如果目标与初始有基数个不相同,就不能达到目标状态. 我们尽可能的是硬币当前硬币接近给定状态 因此从左向右,如果i号硬币与目标相同,跳过,否则翻转i,i+1号硬币.(i<n),翻转次数加一. 当到i==n是如果i号与 继续阅读 >>


张续 14/10/16 20:16:19
如果在Linux下要访问一个文件夹。 我们需要知道一下系统调用. 1.opendir(path); //注意path是绝对路径 2.ptr=readdir(dir);//dir 为opendir();正常打开的文件夹 DIR dir.如果弱国访问dir下的所有文件夹后,readdir()返回NULL,struct dirent ptr; 记录了文件的基本内容 3.stat(file,&buf)//struct stat buf;//将file(文件的绝对路径),的状态放入buf中 下面以一个小列子来说明,若和显示文件夹下文件的信息 #include <stdio.h> #include <string.h> #include <dirent.h> #include <sys/stat.h> #include <fcntl.h> int main(){ DIR *dir; struct dirent *p 继续阅读 >>


张续 14/10/16 00:41:09
网络层 有时也称作互联网层,处理分组在网络中的活动,例如分组的选路。在TCP/IP协议族中,网络层协议包括IP […] 继续阅读 >>


高源 14/10/02 13:29:28
现在给出一个n个元素的书组,元素个数n,需要求出最大最小值. 方法1. 用max,min,分别记录数组最大最小值,顺序扫描数组,不断替换更新max,min,(max,min的初始值都为数组中的第一个元素) 方法2. 1.如果数组中只有一个元素,那么它是最大也是最小值 2.否则数组中多于一个数,则可以求出左边的最大最小值,右边的最大最小值.然后该区间的最大值是max(lmax,rmax),最小值是min(lmin,rmin) 具体如下(n个数字由随机生成). #include <stdio.h> #include <time.h> int getmax(int a,int b){ return a>b?a:b; } int getmin(int a,int b){ return a<b?a:b; } void print(int a[],int n){ int i; for(i=0;i<20;i+ 继续阅读 >>


张续 14/09/30 23:09:09
函数rand()是真正的随机数生成器,而srand()会设置供rand()使用的随机数种子。如果你在第一次调用rand()之前没有调用srand(),那么系统会为你自动调用srand()。 注意而使用同种子相同的数调用 rand()会导致相同的随机数序列被生成。 因此我们如果要生成以m为随机数的种子首先要调用srand(); 下面就举例,生成以100,为种子的随机数10个,将他们控制在0~100之内. #include <stdio.h> int random(int m){ return rand()%m;//將随机数控制在0~m-1之间 } int main(){ int n=10,i,m=100,s=50; srand(s);//设置随机数种子 for(i=0;i<n;i++){ printf("%d ",random(m)); } printf(" 继续阅读 >>


张续 14/09/30 22:52:15
题目大意 给出一个串的长度及该串内容,可以在任意位置插入一个字符,求最少的插入数字,使得串编程回文串. 回文串及从左向右和从右向左读相同. 例如. aaaacbbbb是回文串 aaab不是回文串我们可以给最前面插入b使得原串变为baaab这个回文串 我的思路. 1.如果该串为空串,或者长度为一,该串是回文串. 2.如果有字符串,a[o...n-1],(0<=l,r<n)如果从l-r之         1可能是l-r对称回文(如果a[l]==a[r]),在匹配[l+1,r-1]这个串         2.l,给r处添加字a[l]和l位置匹配,在匹配[l,r-1]这个串         3l处添加字符a[r],和r位置匹配,在匹配[l+1,r]这个串 3.用以上方法加上备忘录d[l][r]来记录算过的串的最少插入数目 d[l][r]记录从l...r匹配插入的最少字符,问题d[0][n-1] if(a[l]==a[r]) dd[l][r]=d[l+1][r+1]; else dd[l][r]=m 继续阅读 >>


张续 14/09/30 14:42:57
这篇是看了别人的报告写的,就当是屡屡思路好了. 题目大意。给定一个n阶矩阵(方阵),每个元素中存在一个数字.任务就是求出一个最大的子矩阵使得矩阵元素之间的和是最大的. n=100; 1.矩阵A[m][n]的和可以直接 sum+=A[i][j] ( i = 0 to n-1 j=0 to n-1); 还可以求出第i列的和p[i],再将所在列加起来,(当然行是同理的). 2.因此所选的矩阵的行k可以枚举(0<=k<=n-1),此时可以现将列加起来,然后找到这些列中连续最大和即可.这就是选出的矩阵最大和. 3.在所有矩阵中选出最大和的一个。 /*Source Code Problem: 1050 User: Memory: 388K Time: 32MS Language: GCC Result: Accepted Source Code*/ #include <stdio.h> int max(int a,int b){ retu 继续阅读 >>


张续 14/09/29 21:25:06
/* 再给顶的n个数的数组中选出连续的若干个数,使得他们的和是最大的,即最大连续自序列和. 列如. 序列. 1 -2 3 -1 6 -5 9 结果 当取子序列 3,-1,6,-5,9 结果12  我的思路. 1.最大连续子序列的开头是在1...n之中.的最大连续和 2.求出以i,开头的最大连续和,此时开头已经确定了,那麽通过枚举结尾j[i,j]之间记录最大连续的i->j的和max[i] 3.在所有以i开头的连续最大和中求出最大的一个即可. */ #include <stdio.h> #define maxn 100 int get_max(int a,int b){ return a>b?a:b; } int main(){ int max[maxn]={0},A[maxn]; int i,n; for(scanf("%d",&n),i=1;i<=n;i++) scanf("%d",& 继续阅读 >>


张续 14/09/24 20:47:56