c语言编程
stary_yan
"I believe people express their appreciation to the rest of humanity is to make something wonderful and put it out there."
展开
-
[Leetcode]Dynamic Programming
[Leetcode]Dynamic ProgrammingRegular Expression MatchingAnalysisIt is easy to understand the problem. What we need to do is to find if the string can be matched by the pattern. At first, I think it wil原创 2017-12-02 12:44:34 · 337 阅读 · 0 评论 -
位操作
位逻辑运算符~:二进制反码或者按位取反 &:逐位比较产生一个新值。只有两个操作数的对应位都为1时结果才是1。 |位或:按位比较,有一个为1则取值为1 ^:位异或1、用法:掩码使用位和 & 就是某些位设为开(1)而某些位设置为关(0)的位组合。 用于覆盖某个变量的某些位。2、用法:打开位使用位或 | 把某个变量的特定位打开。3、用法:关闭位使用& ~把特定位关闭4、用法:转置位使用^5、用原创 2015-12-24 15:47:44 · 355 阅读 · 0 评论 -
sizeof与offsetof有关的结构体详解
sizeof与offsetof在程序中经常遇到,但在面试中其应用使得许多小伙伴吃闭门羹,被面试官问得哑口无言。接下来对两者的应用做详细介绍。关于sizeof定义sizeof乃C/C++中的一个操作符(operator), 简单的说其作用就是返回一个对象或者类型所占的内存字节数。(MSDN上的解释为:The sizeof keyword gives the amount of storage, in转载 2015-12-23 19:47:33 · 384 阅读 · 0 评论 -
最大值最小化问题——分治
问题描述: 把一个包含n个正整数的序列划分成m个连续的子序列。设第i个序列的各数之和为S(i),求所有S(i)的最大值最小是多少? 例如序列1 2 3 2 5 4划分为3个子序列的最优方案为 1 2 3 | 2 5 | 4,其中S(1),S(2),S(3)分别为6,7,4,那么最大值为7; 如果划分为 1 2 | 3 2 | 5 4,则最大值为9,不是最小。 把一个包原创 2015-11-18 15:40:50 · 3044 阅读 · 0 评论 -
熄灯问题
Description:假设围绕着一个圆形舞台有N个彩灯,编号从0到N-1,1<=N<=50,为了配合演出效果需要进行花式熄灯。熄灯的规则是从第x号灯开始熄灭,然后向编号更大的方向数,每逢y个亮着的灯后灭掉当前数到的亮着的彩灯,直到灭完为止。注意N-1号灯与0号灯互为邻居,数到N-1号灯,下一个为0号灯。输入:彩灯数量N,第一个灭灯的位置x,以及间隔y,使用空格间隔输入输出:灭灯的顺序,一行内输出,原创 2015-11-16 14:41:09 · 897 阅读 · 0 评论 -
汉诺塔--c语言递归问题
Description汉诺塔:汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。(百度百科)Input给出第一根柱子的圆盘个数N(N <= 20),你要做的就是找原创 2015-11-16 14:06:38 · 4892 阅读 · 0 评论 -
动态规划-寻找最优分配时间。(未理解)
期末将至,是时候开始复习了。小c本学期共有N门课,编号从0到N-1。此时离期末考还有M小时可以用来复习,小c决定不吃不睡不玩把这些时间全部用来复习这N门课。对于第i门课,在目前(不复习)的情况下,他可以获得Si分。复习一次该门课程耗时Ti小时,同时会提高该门课Di分的总成绩(每门课的分数上限为100分)。此外,第i门课的学分记为Wi。小c有2个目标:首先,他不希望挂掉任何一门课程,即不希望任何一门课转载 2016-01-07 20:17:05 · 2130 阅读 · 0 评论 -
删除相同字符问题---关于fgets
In this exercise, you will get two strings A and B in each test group and the length of every string is less than 40, you need to delete all characters which are contained in string B from string A.The原创 2016-01-07 14:55:57 · 464 阅读 · 0 评论 -
Shooting Game---用数组判断是否为栈输出
Erin最近很喜欢玩射击游戏。她刚考完了C语言的期末考试,感觉很溜,于是又来到了射击娱乐场放松一下。和上次一样,先从老板那租了一把步枪和装有N发子弹的弹夹。在射击的过程中,Erin每次都有两种选择:从弹夹中取出一颗子弹上膛,或者打一发子弹出去。注意:所有的子弹都从枪口上膛。Erin感觉这有点像C语言课程中的“栈”的特点。因此在打完了这N发子弹之后,她想验证一下这些子弹打出来的顺序是不是真的满足“栈”原创 2016-01-07 13:53:47 · 698 阅读 · 0 评论 -
数组--清除相同,并集和交集
There are two groups of some numbers(0~50). each group should be input in a set(remove the duplicate numbers).And then output the two set, intersection and union of the two set.Input format:first line:原创 2016-01-06 23:56:21 · 547 阅读 · 0 评论 -
判断对称二叉树
typedef struct node { int x; struct node* left; struct node* right; } BN;不用关心输入,二叉树构造和删除过程已经在main函数中实现,需要你们实现函数int isSymmetric(BN* root);来判断一棵二叉树是否对称,对称返回1,非对称返回0.node结构要按照上面的代码在symmetr原创 2016-01-06 23:45:32 · 502 阅读 · 0 评论 -
排序二叉树
题目大意:请完成下面四个函数的定义(在tree.h文件中),使整个程序能够利用排序二叉树的结构对输入的数(不会出现相同的数),进行排序输出。节点的结构体在下面已给出,这个二叉树的特征是,左子数的值肯定比父节点小,右子树的值肯定比父节点的大。要求大家按照这个结构特征去构建二叉树,最后中序遍历输出就是我们要求的升序输出。树的节点结构体为:typedef struct Node { struct转载 2016-01-06 14:18:25 · 1455 阅读 · 0 评论 -
编写字符小游戏——贪吃蛇程序(c语言)
#include <stdio.h>#include <string.h>#define SNAKE_HEAD 'H'#define SNAKE_BODY 'X'#define BLANK_CELL ' '#define WALL_CELL '*'void snake_move();void output();int gameove();char map[12][12] = {原创 2015-12-21 16:57:26 · 1870 阅读 · 0 评论 -
高精度加法
#include <stdio.h>#include <string.h>char sa[1000], sb[1000];int a[1000] = {0}, b[1000] = {0}, c[1000] = {0}, la, lb, lc;int main() { scanf("%s %s", sa, sb); la = strlen(sa); lb = strle原创 2015-12-03 21:13:11 · 388 阅读 · 0 评论 -
单向链表
#include<stdio.h>#include<stdlib.h>#define ERROR 0#define OK 1typedef int status;typedef int ElemType;typedef struct Node{ ElemType data; struct Node *next;} LNode,*LinkList;void Buil原创 2015-12-17 16:38:06 · 401 阅读 · 0 评论 -
1482. 奖学金(关于结构体与qsort的思考)
ConstraintsTime Limit: 1 secs, Memory Limit: 32 MBDescription某小学最近得到了一笔赞助,打算拿出其中一部分为学习成绩优秀的前5名学生发奖学金。期末,每个学生都有3门课的成绩:语文、数学、英语。先按总分从高到低排序,如果两个同学总分相同,再按语文成绩从高到低排序,如果两个同学总分和语文成绩都相同,那么规定学号小的同学排在前面,这样,每个学生的原创 2015-11-23 09:11:52 · 633 阅读 · 0 评论 -
proper fraction
Description:giving an integer N (2<=N<=20) and a real number M (0.5#include<stdio.h>int main() { int i, j; int x; int flag = 0; int k = 0; double threshold = 0; scanf("%d%lf",原创 2015-11-25 12:58:04 · 826 阅读 · 0 评论 -
二分搜索问题(未理解)
Haruhi Suzumiya is always interested with extraterrestrials, supernaturals, people who pass through the time from future, and other cool things! But she’s now feel bored with the most interesting thing转载 2016-01-14 21:23:14 · 340 阅读 · 0 评论 -
DFS
2014 蓝桥杯 预赛 c/c++ 本科B组 第九题:地宫取宝(12’)X 国王有一个地宫宝库。是 n x m 个格子的矩阵。每个格子放一件宝贝。每个宝贝贴着价值标签。 地宫的入口在左上角,出口在右下角。 小明被带到地宫的入口,国王要求他只能向右或向下行走。 走过某个格子时,如果那个格子中的宝贝价值比小明手中任意宝贝价值都大,小明就可以拿起它(当然,也可以不拿)。原创 2015-12-27 20:25:14 · 429 阅读 · 0 评论 -
二分搜索模版
#include <stdio.h>int binsearch(int number, int *array, int length) { int low = 0, high = length; int mid = (low + length) >> 1; while (low <= high) { if (array[mid] > number) {原创 2015-12-27 19:04:23 · 854 阅读 · 0 评论 -
Matrix(for hw)---二分搜索
二分查找又称折半查找,优点是比较次数少,查找速度快,平均性能好;其缺点是要求待查表为有序表,且插入删除困难。因此,折半查找方法适用于不经常变动而查找频繁的有序列表。首先,假设表中元素是按升序排列,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置记录将表分成前、后两个子表,如果中间位置记录的关键字大于查找关键字,则进一步查找前一子表,否则进一步查找后一子表。重复以上原创 2015-12-26 14:03:01 · 452 阅读 · 0 评论 -
双向循环链表
#include<stdio.h>#include <stdlib.h>typedef struct node { int value; struct node* prev; struct node* next;}node;void print(node* first) { node *p = NULL, *q = NULL; if (first == N原创 2015-12-25 16:19:16 · 367 阅读 · 0 评论 -
二叉树链表实现(有bug待查)---关于二叉树的思考
使用链表实现二叉树的构造并完成中序遍历。首先在头文件中定义结点结构体如下:typedef struct node {int x;struct node* left;struct node* right;} BN;其次要实现两个函数,函数buildTree通过读入一串整数以层次优先从左到右的方式构建一个二叉树,函数outputTree输出此树的中序遍历。两个函数的原型如下:void buildTree原创 2015-12-25 00:38:23 · 598 阅读 · 0 评论 -
归并排序(c语言)
#include <stdio.h>#include <time.h>#include <stdlib.h>#define max 10void merge_sort(int a[], int p, int r);void merge(int a[], int p, int q, int r);int main() { int array[max]; int i;原创 2015-12-08 23:50:07 · 390 阅读 · 0 评论 -
1137. 河床
Total: 5753 Accepted: 1736 Rating: 2.9/5.0(31 votes)Time Limit: 10sec Memory Limit:32MB Description 地理学家们经常要对一段河流进行测量分析。他们从上游开始向下游方向等距离地选择了n(≤30000)个点测量水位深度。得到一组数据d1,d2,……,dn,回到实验室后数据分析原创 2015-12-07 23:30:30 · 553 阅读 · 0 评论 -
八皇后问题(递归+回溯)
#include <stdio.h>int down[16] = {0};int up[16] = {0};int column[9] = {0};int sum = 0;void tryqueen(int i) { int j; for (j = 1; j <= 8; j++) { if (column[j] || down[i - j + 7] || u原创 2015-12-07 22:40:00 · 442 阅读 · 0 评论 -
拯救大兵雷诺(递归+回溯)
新晋的星灵大主教Artanis在目睹了挚友Zeratul的牺牲之后决心对抗黑暗之神Amon。为此,他首先要团结全星区所有种族的力量。坚定的盟友雷诺和他刚刚结束了Arcturus统治的Terran帝国正在遭受Amon控制的异虫的攻击,帮助他们即可在日后对抗Amon的时候获得帮助。当星灵部队抵达时,人类的战线已经崩溃,Artanis预测,如果没有星灵的帮助,人类部队将在n单位时间之后彻底战败。异虫部队在原创 2015-12-07 12:48:09 · 613 阅读 · 0 评论 -
JumpJump(递归)
给出一个数组,长度为n,编号为0~(n-1),接下来n行,第i行描述关于第i个位置的信息。每行先是一个数k表示从位置i-1可以跳到其他的k个位置去,之后是k个数,表示i-1号点可以跳到的位置,这些位置一定在i-1号位置之后,且从小到大排列。现在有一个小朋友,从0号位置出发,每次往他可以跳的位置跳过去,且从编号小的开始跳。如果遇到一个位置不能继续跳下去则返回之前的位置。输出一路上途径的所有点。例如,n原创 2015-12-03 21:14:55 · 918 阅读 · 0 评论 -
完全二叉树深度优先搜索
使用一个长度为N的数组,1<=N<=50,存储一棵完全二叉树。(二叉树中每个节点最多有两个子树称为左子树和右子树。完全二叉树是除最后一层外,每一层上的节点数均达到最大值;在最后一层上只缺少右边的若干节点。在数组中,如果以下标1为起始位置,那么每个节点的左儿子是其自己下标乘以2的节点,右儿子是自己下标乘以2加1的节点,即arr[i*2]和arr[i*2+1]是arr[i]的左右儿子。)然后使用左子树优原创 2015-12-03 20:54:49 · 998 阅读 · 0 评论 -
高精度减法
DescriptionPY has two positive integer a and b. Now he wants to know the value of a - b.InputTwo lines.The first line is the integer a, while the second line is the integer b.(0< a, b < 10100)Note: 每个数原创 2015-12-01 12:42:45 · 418 阅读 · 0 评论 -
Remove Redundant Characters
Remove all redudant chacacters in a string.For example, the input string is “abacaeedabcdcd”, the output will be “abced”.InputA string whose length is less than 100.For example:abacaeedabcdcdOutputThe原创 2015-12-07 13:40:18 · 2073 阅读 · 0 评论 -
字符串比对(10分)
题目内容: 题目说起来很简单,你会读到两个字符串,每个字符串占据一行,每个字符串的长度均小于10000字符,而且第一个字符串的长度小于第二个字符串的。你的程序要找出第一个字符串在第二个字符串中出现的位置,输出这些位置,如果找不到,则输出-1。注意,第一个字符的位置是0。注意,第一个字符串在第二个字符串中的位置可能不止一处。注意,字符串中可能含有空格。注意,两个字符串的长度一定大于0。输入格式:原创 2015-11-30 10:19:16 · 4350 阅读 · 1 评论 -
高精度乘法
#include <stdio.h>#include <string.h>#define max 10001int high_precision(int *sum,int *a,int *b,int a_len,int b_len){ int i,j; memset(sum,0,sizeof(sum)); int sum_len = 0 ; for(i=1;i<原创 2015-12-17 16:56:41 · 395 阅读 · 0 评论 -
[c语言]EmailAddresses(for hw)
You’ve gathered some e-mail addresses from a variety of sources, and you want to send out a mass mailing to all of the addresses. However, you don’t want to send out duplicate messages. You need to wri原创 2016-01-02 00:42:46 · 1492 阅读 · 0 评论 -
i conduct
I Conduit!ConstraintsTime Limit: 3 secs, Memory Limit: 32 MBDescriptionIrv Kenneth Diggit works for a company that excavates trenches, digs holes and generally tears up people’s yards. Irv’s job is to转载 2015-11-20 22:46:01 · 615 阅读 · 0 评论 -
couple
Description N couples are standing in a circle, numbered consecutively clockwise from 1 to 2N. Husband and wife do not always stand together. We remove the couples who stand together until the ci原创 2015-11-18 23:53:11 · 777 阅读 · 0 评论 -
文章标题
基本定义:结构体,通俗讲就像是打包封装,把一些有共同特征(比如同属于某一类事物的属性,往往是某种业务相关属性的聚合)的变量封装在内部,通过一定方法访问修改内部变量。结构体定义:第一种:只有结构体定义struct stuff{ char job[20]; int age; float height; }; 第二种:附加该结构体类型的“结转载 2015-12-12 21:44:40 · 252 阅读 · 0 评论 -
算法分析
最坏情况分析必要性许多算法在最坏情况下执行会消耗大量的时间因为算法在最佳情况下表现都相同,不必考虑难以判断“平均情况“最坏情况可以告诉我们算法性能的上限o表示法考虑当数据趋向于无穷大时,算法的效率到底有多高。(求极限)计算特性o(1) 表示一个算法运行的时间是固定的。可以省略常数项乘法原则:当一个任务的执行引起另一个任务的迭代执行,就可以相乘。常见复杂计算发生的复杂度o(1) 从原创 2015-12-12 21:31:34 · 281 阅读 · 0 评论 -
递归
递归包括两个过程:递推和回归。一旦递推阶段结束,处理过程就进入回归阶段,在这之前的函数调用以逆序的方式回归。尾递归 能够大量减少运行时间。 核心在于记录每一次递归后的取值。 以阶乘为例:int fact(int n) { if (n == 1 || n == 0) { return 1; } else return n * fact(n - 1原创 2015-12-12 21:12:21 · 222 阅读 · 0 评论 -
换硬币
Description:Jeremy 放假的时候去了一趟HK,他惊喜的发现由于通货膨胀严重,HK竟然有1元,2元,甚至5元的硬币。Jeremy想把身上携带的n元纸币全部换成硬币,请问他有多少种换成的方式呢(即不同类型的硬币数量有多少种组合方式)?input:n ( 0 < n < 2016, 用EOF结束)output: result原创 2015-11-25 12:24:01 · 610 阅读 · 0 评论