![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C语言杂文
好吃的都给你呀
这个作者很懒,什么都没留下…
展开
-
线性表顺序存储结构基本操作
线性表线性表(List):每个元素类型均为DataType。Operation:InitLIst(*L); 初始化操作,建立一个空的线性表L。ListEmpty(L):若线性表为空,返回true,否则返回false。ClearList(*L):将线性表清空。GetElem(L,i,*e): 将线性表L中的第i个位置元素值返回给e。LocateElem原创 2017-08-16 19:04:23 · 2554 阅读 · 0 评论 -
利用栈二进制转化为十进制
利用数据中的栈来进行数制转换,可以深刻领悟栈的含义,也可对栈的定义,入栈,出栈来进行领悟。程序代码如下:#include#include#include#define STACK_INIT_SIZE 20#define STACKINCREMENT 10typedef char ElemType;typedef struct{ ElemType *base; Elem原创 2017-08-10 17:03:50 · 604 阅读 · 0 评论 -
双向循环链表实践练习
程序输入一个数,会使26个英文字母的顺序发生变化,比如原来为 ABCDEFGHIJKLMNUPQRSTUVWXYZ 输入3 字符串变为 DEFGHIJKLMNOPQRSTUVWXYZABC 还可以输入负数 比如-5 VWXYZABCDEFGHIJKLMNOPQRXTU 程序代码如下:#include#include#define原创 2017-08-10 15:29:20 · 276 阅读 · 0 评论 -
约瑟夫问题
约瑟夫问题为数据结构循环链表中重要而且经典的一个实例,新手学习阶段最适合练习,理解其中思想,可以在新手阶段反复练习,达到熟练的程度。#include#include //系统函数头文件 typedef struct node //构建结构体 { int data; //定义链表元素 struct node *next; //定义结点以及它的指针 }node;no原创 2017-08-09 16:02:15 · 286 阅读 · 0 评论 -
数据结构循环链表基本操作实例演示
新手刚刚入门数据结构,用了一个上午了解,认识,理解了循环链表,虽然懂了,可无奈小编智力有限,费了不少时间,不过功夫不负有心人,总算在数据结构大门挤出了一点门缝,看到一个特别好的实例,有链表的初始化,插入,删除,查看,遍历,感觉受益匪浅,想与大家分享,所有理解都加在注释里面了,大家可以边看代码,边理解。原创 2017-08-09 11:25:03 · 409 阅读 · 0 评论 -
nyoj36最长公共子序列
描述咱们就不拐弯抹角了,如题,需要你做的就是写一个程序,得出最长公共子序列。tip:最长公共子序列也称作最长公共子串(不要求连续),英文缩写为LCS(Longest Common Subsequence)。其定义是,一个序列 S ,如果分别是两个或多个已知序列的子序列,且是所有符合此条件序列中最长的,则 S 称为已知序列的最长公共子序列。输入第一行给出一个整数N原创 2017-08-21 20:49:02 · 264 阅读 · 0 评论 -
hdoj1087超级跳跳跳 最大升序字段和
题目描述Nowadays, a kind of chess game called “Super Jumping! Jumping! Jumping!” is very popular in HDU. Maybe you are a good boy, and know little about this game, so I introduce it to you now.原创 2017-08-21 15:58:10 · 1448 阅读 · 0 评论 -
矩形嵌套
矩形嵌套也是动态规划中的比较有代表性的一道题目,算是递增最长子序列的延伸,利用了结构体来表示最基本的元素。描述有n个矩形,每个矩形可以用a,b来描述,表示长和宽。矩形X(a,b)可以嵌套在矩形Y(c,d)中当且仅当a<c,b<d或者b<c,a<d(相当于旋转X90度)。例如(1,5)可以嵌套在(6,2)内,但不能嵌套在(3,4)中。你的任务是选出尽可能多的矩形排成一行,使得除最后一原创 2017-08-20 09:33:29 · 531 阅读 · 0 评论 -
单调递增最长子序列nyoj17
单调递增最长子序列为动态规划比较简单而且比较有代表性的一道最长子序列题目,其中的状态转换方程较为容易理解。: for(i=0;i<len;i++) { count[i]=1; for(j=0;j<i;j++) { if(s[i]>s[j]&&count[j]+1>count[i]) count[i]=count[j]+1; }原创 2017-08-20 08:35:30 · 213 阅读 · 0 评论 -
nyoj32组合数
描述找出从自然数1、2、... 、n(0<n<10)中任取r(0<r<=n)个数的所有组合。输入输入n、r。输出按特定顺序输出所有组合。特定顺序:每一个组合中的值从大到小排列,组合之间按逆字典序排列。样例输入5 3样例输出543542541532531521432431421321还是递归,每调用一次函数原创 2017-08-22 20:00:23 · 244 阅读 · 0 评论 -
nyoj20吝啬的国度
看了一上午,终于看懂了这个递归,或许一些大牛或熟练的人已经对里面的思路了然于心,但对于初学者的我还是花了好长时间才理解里面的弯弯绕绕,真的是佩服想出来这种方法的人,又一次的对IT界的前辈和大牛们的智慧感到敬佩。描述在一个吝啬的国度里有N个城市,这N个城市间只有N-1条路把这个N个城市连接起来。现在,Tom在第S号城市,他有张该国地图,他想知道如果自己要去参观第T号城市,必须原创 2017-08-22 15:51:55 · 417 阅读 · 0 评论 -
nyoj97:兄弟郊游问题
这道题果然不愧为数论模块的题,满满的初中应用题的气息,第一眼看到题构思的过程感觉跟初中时一模一样(而且感觉这道题真的初中时做过),但还是第一次构思时入了坑,开始会在想,狗一趟一趟的往返,然后我还想着有返回时和追击时两种情况,然后后来还在纠结距离和时间哪个作为判断点,或许是真的大脑太长时间没有运作过真的就快秀逗了,后来再一想,不管狗是在追击还是往返,它就一直在以一个速度奔跑,然后距离=速度*时间,而原创 2018-04-04 17:14:02 · 341 阅读 · 0 评论 -
nyoj139我排第几个&nyoj第几是谁?——康托展开及康托逆展开
康拓展开X=a[n]*(n-1)!+a[n-1]*(n-2)!+...+a[i]*(i-1)!+...+a[1]*0!,其中a[i]为当前未出现的元素中是排在第几个(从0开始,相同于数组下标)。这就是康托展开。所得结果X是一共有X个比当前所给的排列小的排列个数如我想知道321是{1,2,3}中第几个小的数可以这样考虑 : 第一位是3,当第一位的数小于3时,那排列数小于321原创 2018-04-03 20:44:55 · 213 阅读 · 0 评论 -
nyoj187:筛选法——快速查找素数
数论模块的一道基础题,考察的就是筛选法——快速查找素数,在nyoj上已经通不过了,可能OJ内部出现了问题,一直显示超时,可以在XYOJ:http://xyoj.xynu.edu.cn/problem.php?id=1913 或者:http://115.159.40.116/ 提交,只要是筛选法都可以A。下面我给出nyoj上的题目介绍吧。快速查找素数时间限制:1000 ms | 内存限制:65...原创 2018-04-03 20:14:18 · 309 阅读 · 1 评论 -
nyoj115城市平乱
城市平乱时间限制:1000 ms | 内存限制:65535 KB难度:4描述南将军统领着N个部队,这N个部队分别驻扎在N个不同的城市。他在用这N个部队维护着M个城市的治安,这M个城市分别编号从1到M。现在,小工军师告诉南将军,第K号城市发生了暴乱,南将军从各个部队都派遣了一个分队沿最近路去往暴乱城市平乱。现在已知在任意两个城市之间的路行军所需的时间,你作为南将军麾下最厉害的程序员,请你编写一个...原创 2018-04-10 10:47:56 · 139 阅读 · 0 评论 -
nyoj38布线问题两种算法详解
布线问题时间限制:1000 ms | 内存限制:65535 KB难度:4描述南阳理工学院要进行用电线路改造,现在校长要求设计师设计出一种布线方式,该布线方式需要满足以下条件:1、把所有的楼都供上电。2、所用电线花费最少输入第一行是一个整数n表示有n组测试数据。(n<5)每组测试数据的第一行是两个整数v,e.v表示学校里楼的总个数(v<=500)随后的e行里,每行有...原创 2018-04-09 20:57:12 · 556 阅读 · 0 评论 -
一个很有意思的并查集详解
并查集是我暑假从高手那里学到的一招,觉得真是太精妙的设计了。以前我无法解决的一类问题竟然可以用如此简单高效的方法搞定。不分享出来真是对不起party了。(party:我靠,关我嘛事啊?我跟你很熟么?)来看一个实例,杭电1232畅通工程首先在地图上给你若干个城镇,这些城镇都可以看作点,然后告诉你哪些对城镇之间是有道路直接相连的。最后要解决的是整幅图的连通性问题。比如随意给你两个点,让你判断它们是否连...转载 2018-04-09 16:55:17 · 323 阅读 · 0 评论 -
连续自然数的阶乘求和
求1!+2!+3!+...+20!#include //连续自然数的阶乘求和 int main(){ int i,j; double sum,sum1=1; for(i=1;i<=20;i++) //控制20次累加循环 { for(j=1;j<=i;j++) //控制每个数的阶乘 { sum1=sum1*j; //阶乘 } s原创 2017-07-21 19:10:36 · 3363 阅读 · 0 评论 -
20岁生日
路过这的20岁生日就要到了,他当然很开心,可是他突然想到一个问题,是不是每个人从出生开始,到达20岁生日时所经过的天数都是一样的呢?似乎并不全都是这样,所以他想请你帮忙计算一下他和他的几个朋友从出生到达20岁生日所经过的总天数,让他好来比较一下。输入一个数T,后面T行每行有一个日期,格式是YYYY-MM-DD。如我的生日是1988-03-07。输出T行,每行一个数,原创 2017-07-28 18:32:32 · 469 阅读 · 0 评论 -
Divisible number可分割数
题目描述1, 2, 3... ... N this n (0 < n < = 1000000000) in the number of how many Numbers can be divided exactly by positive integer b输入Input contains multiple sets of dataEach grou原创 2017-07-28 18:35:06 · 387 阅读 · 0 评论 -
Quicksum
A checksum is an algorithm that scans a packet of data and returns a single number. The idea is that if the packet is changed, the checksum will also change, so checksums are often used for detecting原创 2017-07-28 18:44:43 · 627 阅读 · 0 评论 -
Fibonacci Again!
题目描述求第n个斐波那契数是否是一个素数,n为整数f[n]=f[n-1]+f[n-2] (2f[1]=3,f[2]=7输入输入整数m,0输出如果f[m]是素数 则输出Yes,否则输出No,每行输出占一行。样例输入23样例输出YesNo#includeint main(){ int N; whil原创 2017-07-28 18:54:55 · 209 阅读 · 0 评论 -
Sky 数
Sky从小喜欢奇特的东西,而且天生对数字特别敏感,一次偶然的机会,他发现了一个有趣的四位数2992,这个数,它的十进制数表示,其四位数字之和为2+9+9+2=22,它的十六进制数BB0,其四位数字之和也为22,同时它的十二进制数表示1894,其四位数字之和也为22,啊哈,真是巧啊。Sky非常喜欢这种四位数,由于他的发现,所以这里我们命名其为Sky数。但是要判断这样的数还是有点麻烦啊,那么现在请你帮原创 2017-07-28 19:15:03 · 404 阅读 · 0 评论 -
图论算法 有图有代码 万字总结 向前辈致敬
图的定义背景知识看到这篇博客相信一开始映入读者眼帘的就是下面这幅图了,这就是传说中的七桥问题(哥尼斯堡桥问题)。在哥尼斯堡,普雷格尔河环绕着奈佛夫岛(图中的A岛)。这条河将陆地分成了下面4个区域,该处还有着7座连接这些陆地的桥梁。问题是如何从某地出发,依次沿着各个桥,必须经过每座桥且每座桥只能经过1次,最终回到原地。不知道这个问题且好奇的童鞋现在肯定在忙活着找出来这道题的结果了。是伟大的数学家欧拉...转载 2018-04-08 09:49:44 · 3178 阅读 · 1 评论 -
图解堆算法、链表、栈与队列(多图预警)
堆算法什么是堆堆(heap),是一类特殊的数据结构的统称。它通常被看作一棵树的数组对象。在队列中,调度程序反复提取队列中的第一个作业并运行,因为实际情况中某些时间较短的任务却可能需要等待很长时间才能开始执行,或者某些不短小、但很重要的作业,同样应当拥有优先权。而堆就是为了解决此类问题而设计的数据结构。二叉堆是一种特殊的堆,二叉堆是完全二叉树或者近似完全二叉树,二叉堆满足堆特性:父节点的键值总是保持...转载 2018-04-08 20:18:21 · 217 阅读 · 0 评论 -
分拆素数和
把一个偶数拆成两个不同素数的和,有几种拆法呢?输入输入包含一些正的偶数,其值不会超过10000,个数不会超过500,若遇0,则结束。输出对应每个偶数,输出其拆成不同素数的个数,每个结果占一行。样例输入30260样例输出32原创 2017-07-28 18:20:24 · 406 阅读 · 0 评论 -
笨小熊
描述笨小熊的词汇量很小,所以每次做英语选择题的时候都很头疼。但是他找到了一种方法,经试验证明,用这种方法去选择选项的时候选对的几率非常大! 这种方法的具体描述如下:假设maxn是单词中出现次数最多的字母的出现次数,minn是单词中出现次数最少的字母的出现次数,如果maxn-minn是一个质数,那么笨小熊就认为这是个Lucky Word,这样的单词很可能就是正确的答案。原创 2017-07-27 20:29:01 · 249 阅读 · 0 评论 -
判断闰年
#include //判断闰年 int main(){ int year; do{ scanf("%d",&year); }while(year2500); //设置输入范围 if((year%4==0&&year%100!=0)||year%400==0) //判断闰年依据 printf("leap year"); else printf("not leap原创 2017-07-20 08:13:17 · 226 阅读 · 0 评论 -
a+aa+aaa+...+aa....a(n个a)的和
#include //求a+aa+aaa+...+aa....a(n个a)的和 int main(){ int m,n,i; long j=0,sum=0; scanf("%d%d",&m,&n); for(i=1;i<=n;i++) //控制n次累加循环 { j=j*10+m; //中间数改变,进化为高一位的数 sum=sum+j; //累加求和原创 2017-07-20 20:00:14 · 749 阅读 · 0 评论 -
奖金计算
因为比较繁琐 , 所以方便大家使用而上传#include //奖金计算 int main() { int i; double bonus,bon1,bon2,bon4,bon6,bon10; bon1=100000*0.1; //因为奖金分配有界限 所以先计算好规定之内的 bon2=bon1+100000*0.075原创 2017-07-21 19:11:49 · 543 阅读 · 0 评论 -
译密码
题目:为使电文保密,往往按照一定的规律将其转换成密码,收报人再按照约定的规律将其译成原文。例如,某次发报时采用的密码规律为:将字母A变成字母E,a变成e,即变成其后的第4个字母,W(w)变成A(a),X(x)变成B(b), Y(y)变成C(c),Z(z)变成D(d)#include //译密码 int main(){ char a[100]; //定义一个原创 2017-07-21 19:07:49 · 2327 阅读 · 0 评论 -
输出1900至2000年(包含1900年和2000年)间的所有闰年
#include //输出1900至2000年(包含1900年和2000年)间的所有闰年int main(){ int year; for(year=1900;year<=2000;year++) //设置循环范围 { if((year%4==0&&year%100!=0)||(year%400==0)) //满足条件输出 printf("%d\n",y原创 2017-07-21 19:06:58 · 18510 阅读 · 0 评论 -
逆序输出正整数各位上数字
#include //逆序输出正整数各位上数字int main(){ int n,count=0,i,a[5]; scanf("%d",&n); while(1) //无限循环 { a[count]=n%10; //a[count]取此时n的最后一位数 n=n/10; //a[count]取完值后减小十倍,继续循环,让数组内的数取得每位上的数原创 2017-07-21 19:06:30 · 4830 阅读 · 0 评论 -
字符统计
输入一行字符,分别统计其中英文字母、空格、数字和其他字符的个数,分行输出该结果。#include //字符统计 int main(){ int chare=0,num=0,spa=0,oth=0; //定义四种字符数目 char c; while((c=getchar())!='\n') //控制当输入换行符时循环结束 { if((c>='a')&&原创 2017-07-21 19:04:56 · 272 阅读 · 0 评论 -
一元二次方程求根
#include //一元二次方程求根 #includeint main(){ int a,b,c; //定义系数 double der,g1,g2,g; //定义判断式 两个不等根 一个相等根 scanf("%d%d%d",&a,&b,&c); //输入系数 der=b*b-4*a*c; //计算判断式 if(der>0) //判断判断式原创 2017-07-21 19:03:46 · 602 阅读 · 0 评论 -
计算1-1/2+1/3-....1/100
#include //计算1-1/2+1/3-....1/100 int main(){ double sum=1.0,term,sign=1.0,deno=2.0; //sum最终的和 term中间中转值 sign符号控制 deno计算范围 for(deno;deno<=100;deno++) //deno=2 因为sum直接等于1 省去步骤 { sign原创 2017-07-20 08:15:12 · 2498 阅读 · 0 评论 -
判断素数
#include //判断素数 int main(){ int n,i,sum=0; do{ scanf("%d",&n); }while(n10000); //设置输入范围 for(i=2;i<=n-1;i++) //因为需要舍去1和本身 故i=2,i<n-1, { if(n%i==0) //如果这个数能对1和本身之内的数整除 则循环结束 br原创 2017-07-20 08:30:55 · 212 阅读 · 0 评论 -
输入十个数 求出最大值
#include //输入十个数 求出最大值 int main(){ int a[10],i; //定义数组 for(i=0;i<10;i++) { scanf("%d",&a[i]); //循环给数组赋值 } printf("\n"); for(i=0;i<10;i++) //进行数组元素比较 { if(a[i]>a[i+1]) /原创 2017-07-20 08:37:07 · 6772 阅读 · 0 评论 -
阶乘因式分解
描述给定两个数m,n,其中m是一个素数。将n(0输入第一行是一个整数s(0随后的s行, 每行有两个整数n,m。输出输出m的个数。样例输入2100 516 2样例输出2415#includeint main(){ int s,n,m,sum; scanf("%d",&s); while(s--) {原创 2017-07-27 19:27:29 · 287 阅读 · 0 评论 -
6174问题
描述假设你有一个各位数字互不相同的四位数,把所有的数字从大到小排序后得到a,从小到大后得到b,然后用a-b替换原来这个数,并且继续操作。例如,从1234出发,依次可以得到4321-1234=3087、8730-378=8352、8532-2358=6174,又回到了它自己!现在要你写一个程序来判断一个四位数经过多少次这样的操作能出现循环,并且求出操作的次数比如输入1234执行顺序是原创 2017-07-27 19:45:56 · 175 阅读 · 0 评论