02 2013 档案
强制类型转换int(float)的结果只保留整数部分,并非四舍五入
摘要:强制类型转换int(float)的结果只保留整数部分,并非四舍五入 阅读全文
posted @ 2013-02-26 15:36 wwjyt 阅读(716) 评论(0) 推荐(0)
ungetc
摘要:功 能把一个字符退回到输入流中用 法int ungetc(char c, FILE *stream);输入参数c 要写入的字符,stream 文件流指针输出参数字符c - 操作成功,EOF - 操作失败 while( (temp = getchar()) != '\n') { ungetc(temp, stdin); for(i = 0; i < n; i++) { scanf("%d", &mark[now][i]); } getchar(); now++;//now记录了有几行选票! 别忘了3行下标为2 } 阅读全文
posted @ 2013-02-26 06:57 wwjyt 阅读(194) 评论(0) 推荐(0)
投票系统
摘要:2:澳大利亚投票系统要求选民们将所有候选人按意愿选择的程度排序,一张选票就是一个排序。一开始,每张选票的首选项将被统计。若有候选人得票超过50%,他将直接胜出;否则,所有并列得票最低的候选人将出局,而那些将出局候选人排在第一位的选票将被重新统计为排名最高的未出局候选人。这一筛选过程将持续进行,直到某个候选人得票超过50%的选票,或所有候选人得票相同。输入:输入第一行包含一个正整数,代表测试的数据组数。然后是一个空行,接下来是数据,每两组数据之间用空行隔开。每组数据第一行为一个整数n<=20,代表候选人数目。接下来n行按顺序给出候选人的名字,最长80个字符,可以是任何可打印字符。接下来是最 阅读全文
posted @ 2013-02-26 06:56 wwjyt 阅读(305) 评论(0) 推荐(0)
哈希打表____Jolly Number
摘要:对于一个包含n>0个元素的整数序列,如果序列中相邻元素之差的绝对值取遍从1到n-1的所有整数,那么这个序列就叫做jolly number。例如1 4 2 3就是一个jolly number,因为相邻元素之差的绝对值分别为3、2、1。这个定义意味着所有的单元素序列都是jolly number.写一个程序来判断一个序列是不是jolly jumber.输入:输入的每行首先包含一个整数n(表示序列的长度,n#include #include #include int main(){ int n, i, pre, cur; char hash[3000]; while(scanf("%. 阅读全文
posted @ 2013-02-26 05:57 wwjyt 阅读(630) 评论(0) 推荐(0)
memset
摘要:将s所指向的某一块内存中的每个字节(八位二进制数)的内容全部设置为ch指定的ASCII值, 块的大小由第三个参数指定,这个函数通常为新申请的内存做初始化工作, 其返回值为指向S的指针。void *memset(void *s,int ch,size_t n); 函数解释:将 s 中前 n 个字节用 ch 替换并返回 s 。memset:作用是在一段内存块中填充某个给定的值,它是对较大的结构体或数组进行清零操作的一种最快方法。常见错误:1.其实这个错误严格来讲不能算用错memset,但是它经常在使用memset的场合出现 int some_func(struct something *a){ … 阅读全文
posted @ 2013-02-26 05:34 wwjyt 阅读(188) 评论(0) 推荐(0)
跳跃回溯____寻找最长平台
摘要:已知一个已经从小到大排序的数组,这个数组中的一个平台就是连续的一串值相同的元素。例如在1,2,2,3,3,3,4,5,5,6中1,2.2,3.3.3,4,5.5,6都是平台。尝试编写一个程序,接受一个从小到大排好序的数组,把这个数组中最长的平台找出来。例如,在上面的例子中,3.3.3就是这个数组最长的平台。以下内容转载至:http://hxraid.iteye.com/blog/6553891、经典最长平台算法已知一个已经从小到大排序的数组,这个数组中的一个平台(Plateau)就是连续的一串值相同的元素 ,并且这一串元素不能再延伸。例如,在 1,2,2,3,3,3,4,5,5,6中[1]、[ 阅读全文
posted @ 2013-02-24 05:30 wwjyt 阅读(548) 评论(0) 推荐(0)
简单递归____判断整型数组a[N]是不是升序排列
摘要:升序表示越来越大 即1 2 3 4 5 6#include #include #include #include void fun(int array[], int arraySize, int index){ if(arraySize == 0)//Q:此段其实只需要第一次判断,如何实现呢? { printf("数组为空!\n"); return; } else if(index == (arraySize - 1) )//已经到最后一个,arraySize需-1 { printf("满足升序!\n"); ... 阅读全文
posted @ 2013-02-23 19:32 wwjyt 阅读(551) 评论(0) 推荐(0)
额外数组____O(n)寻找>=左侧所有数,<=右侧所有数
摘要:使用额外数组,比如rightMin[],来帮我们记录原始数组array[i]右边(包括自己)的最小值。假如原始数组为: array[] = {7, 10, 2, 6, 19, 22, 32},那么rightMin[] = {2, 2, 2, 6, 19, 22, 32}.也就是说,7右边的最小值为2, 2右边的最小值也是2。有了这样一个额外数组,当我们从头开始遍历原始数组时,我们保存一个当前最大值 max,如果当前最大值刚好等于rightMin[i], 那么这个最大值一定满足条件。还是刚才的例子。参考来源:http://blog.jrj.com.cn/1832597331,5284403a.h 阅读全文
posted @ 2013-02-23 19:25 wwjyt 阅读(270) 评论(0) 推荐(0)
快慢指针____函数将字符串中的字符'*'移到串的前部分,前面的非'*'字符后移
摘要:函数将字符串中的字符'*'移到串的前部分,前面的非'*'字符后移,但不能改变非'*'字符的先后顺序,函数返回串中字符'*'的数量。如原始串为:ab**cd**e*12,处理后为*****abcde12,函数并返回值为5。(要求使用尽量少的时间和辅助空间类似快慢指针 i j初值为length - 1 ,如果为0则顺序会产生一定的颠倒i指向字母,容易保证字母指针指的靠前(只要i指向字母 就跟j指向的*换位置,换位置后则i--,j-- ;i指向*号时,i-- count++)j指向*交换代码部分替换为array[j] = array[i 阅读全文
posted @ 2013-02-23 02:15 wwjyt 阅读(460) 评论(0) 推荐(0)
partition
摘要:partition[英][pɑ:ˈtiʃən][美][pɑrˈtɪʃən]简明释义n.划分,分开;分割;隔离物;隔墙vt.分开,隔开;区分;分割 阅读全文
posted @ 2013-02-23 02:08 wwjyt 阅读(274) 评论(0) 推荐(0)
文件操作 freopen fopen FILE* fscanf fprintf fclose remove rename fseek
摘要:freopenfreopen("input.txt", "r", stdin);freopen("output.txt", "w", stdout);FILE*fin,*fout; 文件指针fin=fopen(“data.in”,“rb”);fout=fopen(“data.out”,“wb”);对于文件使用方式有以下几点说明:1)文件使用方式由r,w,a,t,b,+六个字符拼成,各字符的含义是:r(read): 读w(write): 写+: 读和写a(append): 追加t(text): 文本文件,可省略不写b 阅读全文
posted @ 2013-02-23 02:05 wwjyt 阅读(469) 评论(0) 推荐(0)
strncmp strstr____asderwsde,寻找其中的一个子字符串比如sde的个数
摘要:编写一个函数,已知一个字符串,比如asderwsde,寻找其中的一个子字符串比如sde的个数,如果没有返回0,有的话返回子字符串的个数。函数的原型为int num_of_substring(const char* string,const char *substring);利用strncmp函数名: strncmp 功 能: 串比较 用 法: int strncmp(char *str1, char *str2, int maxlen); 说明:此函数功能即比较字符串str1和str2的前maxlen个字符。如果前maxlen字节完全相等,返回值就=0;在前maxlen字节比较过程中,如果出现 阅读全文
posted @ 2013-02-23 02:02 wwjyt 阅读(295) 评论(0) 推荐(0)
sub- ____如substring简写sub
摘要:sub-在...以下,少于,低于,亚于,次于sub-zero temperatures 零度以下气温sub-standard 低于标准的对了,我们不是学过subway(地下铁路) submarine(潜艇) 吗? 阅读全文
posted @ 2013-02-23 02:00 wwjyt 阅读(270) 评论(0) 推荐(0)
strncmp
摘要:strncmp函数名: strncmp功 能: 串比较用 法: int strncmp(char *str1, char *str2, int maxlen);说明:此函数功能即比较字符串str1和str2的前maxlen个字符。如果前maxlen字节完全相等,返回值就=0;在前maxlen字节比较过程中,如果出现str1[n]与str2[n]不等,则返回(str1[n]-str2[n])。 阅读全文
posted @ 2013-02-23 01:55 wwjyt 阅读(269) 评论(0) 推荐(0)
注意顺序____用C语言实现函数void * memmove(void *dest, const void *src, size_t n)
摘要:用C语言实现函数void*memmove(void*dest,constvoid*src,size_tn)。memmove函数的功能是拷贝src所指的内存内容前n个字节到dest所指的地址上。强制类型转换或的优先级高于 + 符。来源http://blog.csdn.net/91program/article/details/73639441.考虑到内存可能重叠的情况(1)当源内存的首地址等于目标内存的首地址时,不进行任何拷贝(2)当源内存的首地址大于目标内存的首地址时,实行正向拷贝(3)当源内存的首地址小于目标内存的首地址时,实行反向拷贝2.由于可以把任何类型的指针赋给void类型的指针这个函 阅读全文
posted @ 2013-02-23 01:35 wwjyt 阅读(307) 评论(0) 推荐(0)
快速排序____解释"一趟快速排序"
摘要:一趟快速排序的算法是:1)设置两个变量i、j,排序开始的时候:i=0,j=N-1;2)以第一个数组元素作为关键数据,赋值给key,即 key=A[0];3)从j开始向前搜索,即由后开始向前搜索(j -- ),找到第一个小于key的值A[j],A[i]与A[j]交换;4)从i开始向后搜索,即由前开始向后搜索(i ++ ),找到第一个大于key的A[i],A[i]与A[j]交换;5)重复第3、4、5步,直到 I=J; (3,4步是在程序中没找到时候j=j-1,i=i+1,直至找到为止。找到并交换的时候i, j指针位置不变。另外当i=j这过程一定正好是i+或j-完成的最后令循环结束。)待排序的数组A 阅读全文
posted @ 2013-02-23 01:15 wwjyt 阅读(1146) 评论(0) 推荐(0)
消除原理____假设数组中有一个数字出现的次数超过了数组长度的一半,试编程找出这个数字(qosrt 快速排序 哈希)
摘要:1学想法 4学做法方法1:类似于消除原理,既然某个数字大于长度的一半,那么我们就遍历数组,如果两个数不相等则消除,最后剩下的数就是我们要的。当然如果不存在这样的数,这是不行的。所以最后要再遍历一遍验证这个数的出现次数是否大于数组的一半。具体实现:我们在考虑删除两个不同的数字的时候,实际上可以同过计数来实现,而不是物理上真正的删除。 在遍历数组的时候保存两个值:一个是数组中的一个数字,一个是次数。当我们遍历到下一个数字的时候,如果下一个数字和我们之前保存的数字相同,则次数加1。如果下一个数字和我们之前保存的数字不同,则次数减1。如果次数为零,我们需要保存下一个数字,并把次数设为1。由于我们要找的 阅读全文
posted @ 2013-02-23 01:01 wwjyt 阅读(288) 评论(0) 推荐(0)
简单递归____判断一个字符串是否为回文
摘要:1.递归的作用在于把问题的规模不断缩少,直到问题缩少到能简单地解决2.新问题与原问题有着相同的形式3.递归的结束需要简单情景解法:我们只需要以去掉两端的字符的形式一层层检查,每一次的检查都去掉了两个字符,这样就达到了缩少问题规模的目的。#include #include #include #include void fun(char *array, int arraySize, int index){ //printf("index:%d\n",index); //printf("size:%d\n",arraySize); //printf(" 阅读全文
posted @ 2013-02-23 00:48 wwjyt 阅读(236) 评论(0) 推荐(0)
方便复制
摘要:#include #include #include #include int main(){ return 0;}#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std;int main(){return 0;} 阅读全文
posted @ 2013-02-23 00:41 wwjyt 阅读(182) 评论(0) 推荐(0)